注意:如果我們使用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
