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
複製代碼