pom.xmljava
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>xxx.xxx</groupId>
<artifactId>xxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>loan</name>
<description></description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 去除旧log依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--增长log4j2依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-mockmvc</artifactId>
<scope>test</scope>
</dependency>
<!--密码加密使用-->
<dependency>
<groupId>org.acegisecurity</groupId>
<artifactId>acegi-security</artifactId>
<version>1.0.7</version>
</dependency>
<!--json转换工具-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!--mybatis自动分页-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<!--表示把java目录下的有关xml文件,properties文件编译/打包的时候放在resource目录下-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
</build>
</project>
复制代码
log4j2.xmlmysql
<?xml version="1.0" encoding="utf-8" ?>
<Configuration status="warn" monitorInterval="1800">
<properties>
<property name="LOG_HOME">./logs</property>
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Method: %l ]%n%p:%m%n%n</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
</Console>
<RollingFile
name="api"
fileName="${LOG_HOME}/api.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/api-%d{yyyy-MM-dd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile
name="app"
fileName="${LOG_HOME}/app.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile
name="WarnLog"
fileName="${LOG_HOME}/warn.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="WARN"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout charset="UTF-8" pattern="${PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile
name="ErrorLog"
fileName="${LOG_HOME}/error.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="ERROR"/>
<PatternLayout charset="UTF-8" pattern="${PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.springframework" level="info"/>
<logger name="org.mybatis" level="debug"></logger>
<Logger name="apiLogger" additivity="TRUE" level="ALL">
<AppenderRef ref="api" level="ALL" />
</Logger>
<Logger name="appLogger" additivity="TRUE" level="ALL">
<AppenderRef ref="app" level="ALL" />
</Logger>
<logger name="xxx.xxx.xxx.dao" level="DEBUG">
<AppenderRef ref="Console" />
<AppenderRef ref="debug_appender" />
</logger>
<root level="warn">
<appender-ref ref="Console" level="warn"/>
<appender-ref ref="ErrorLog"/>
<appender-ref ref="WarnLog"/>
</root>
</Loggers>
</Configuration>
复制代码
application.ymlgit
spring:
profiles:
active: dev
http:
encoding:
force: true
charset: UTF-8
enabled: true
server:
tomcat:
uri-encoding: UTF-8
复制代码
application-dev.ymlgithub
server:
port: 8080
spring:
application:
name: xxx
thymeleaf:
mode: HTML5
cache: false
datasource:
name: xxx
url: jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
username: username
password: password
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
druid:
#初始化链接数
initial-size: 1
#最大链接数
max-active: 100
#获取链接时最大等待时间,单位毫秒
max-wait: 3600000
#最小链接数量
min-idle: 1
#是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提高巨大,好比说oracle。在mysql下建议关闭
pool-prepared-statements: false
#要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改成true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,能够把这个数值配置大一些,好比说100
max-open-prepared-statements: 20
#用来检测链接是否有效的sql,要求是一个查询语句。
validation-query: select 1
#申请链接时执行validationQuery检测链接是否有效,作了这个配置会下降性能
test-on-borrow: false
#归还链接时执行validationQuery检测链接是否有效,作了这个配置会下降性能
test-on-return: false
#建议配置为true,不影响性能,而且保证安全性。申请链接的时候检测,若是空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测链接是否有效
test-while-idle: true
#1.Destroy线程会检测链接的间隔时间 2.testWhileIdle的判断依据,详细看testWhileIdle属性的说明
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
#自动清除无用链接
remove-abandoned: true
remove-abandoned-timeout: 300
#属性类型是字符串,经过别名的方式配置扩展插件,经常使用的插件有:监控统计用的filter:stat日志用的filter:log4j防护sql注入的filter:wall
filters: stat
redis:
host: 127.0.0.1
port: 6379
database: 10
password: xxx
timeout: 3000
jedis:
pool:
max-active: -1
max-wait: -1
max-idle: 1000
min-idle: 50
mybatis:
#pojo扫描的包名
type-aliases-package: xxx.xxx.xxx.model
#Mapper.xml所在的位置
mapper-locations: classpath:xxx/xxx/xxx/dao/impl/*.xml
#字段转换实体类驼峰式命名
configuration:
map-underscore-to-camel-case: true
# 解决map对象转出为null 不输出字段
call-setters-on-nulls: true
复制代码