Spring Boot之默認連接池配置策略


注意:如果我們使用spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa “starters”坐標,Spring Boot將自動配置HikariCP連接池,

   因為HikariCP在性能和並發性相比其他連接池都要好。

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

 

一、默認連接池策略

1.如果可以得到HikariCP連接池類,就優先配置HikariCP

2.否則,如果Tomcat pooling類可以得到,則使用它

3.如果上面兩個都拿不到,則配置其他連接池,比如Commons DBCP2 

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

 

yml文件:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/heimdallr?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
#   Spring Boot官方推薦的數據庫連接池是Hikari,從一些第三方的評測結果看,Hikari的性能比Druid要好,但是Druid自帶各種監控工具,背后又有阿里一直在為它背書
#   hikari數據源配置,
    hikari:
      connection-test-query: SELECT 1 FROM DUAL
      connection-timeout: 30000
      maximum-pool-size: 20
      max-lifetime: 1800000
      minimum-idle: 5

 

二、自己指定連接池

通過設置spring.datasource.type屬性,可以跳過默認連接池選擇策略,比如指定druid連接池

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/heimdallr?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
# 下面為連接池的補充設置,應用到上面所有數據源中
# 初始化大小,最小,最大
    max-idle: 10
    max-wait: 1000
    min-idle: 5
    initial-size: 5
    output.ansi.enabled: always
# 配置druid
    druid:
# 配置獲取連接等待超時的時間
      maxWait: 60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
      validationQuery: SELECT 1 FROM t_user
      testWhileIdle: true
      testOnBorrow: true
      testOnReturn: false
# 打開PSCache,並且指定每個連接上PSCache的大小
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
# 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用於防火牆
      filters: stat,wall,log4j
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合並多個DruidDataSource的監控數據
#     useGlobalDataSourceStat: true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM