springboot下mysql+mybatis+pagehelper+druid+slf4+log4j2等基礎配置

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

複製代碼
相關文章
相關標籤/搜索