alibaba druid数据库连接池在spring项目中的常用配置项yml和properties
pom.xml中的关键依赖项
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: username
password: ******
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
db-type: mysql
initial-size: 5
min-idle: 5
max-active: 50
max-wait: 60000
test-while-idle: true
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 30000
validation-query: select 'x'
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall,slf4j
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
use-global-data-source-stat: true
stat-view-servlet:
login-username: admin
login-password: admin
enabled: true
web-stat-filter:
enabled: true
application.properties
spring.datasource.url = jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username = username
spring.datasource.password = ******
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
########################## druid配置 begin#################################
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
## 在各自的项目中单独调整min-idle、max-active、max-wait的值
# 初始化大小,最小,最大
spring.datasource.druid.initial-size = 5
# 最小连接池数量
spring.datasource.druid.min-idle = 5
# 最大连接池数量
spring.datasource.druid.max-active = 50
# 配置获取连接等待超时的时间
spring.datasource.druid.max-wait = 60000
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
spring.datasource.druid.test-while-idle = true
# 既作为检测的间隔时间又作为testWhileIdel执行的依据
spring.datasource.druid.time-between-eviction-runs-millis = 60000
#销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
spring.datasource.druid.min-evictable-idle-time-millis = 30000
#用来检测连接是否有效的sql 必须是一个查询语句
#mssql中为 select 1
#mysql中为 select 'x'
#oracle中为 select 1 from dual
spring.datasource.druid.validation-query = select 'x'
#申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
spring.datasource.druid.test-on-borrow = false
#归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
spring.datasource.druid.test-on-return = false
#当数据库抛出不可恢复的异常时,抛弃该连接,会根据连接池连接数据库的类型自动匹配不同类型的ExceptionSorter,不需要额外配置。
#spring.datasource.druid.exception-sorter = true
#是否缓存preparedStatement,mysql5.5+建议开启
spring.datasource.druid.pool-prepared-statements = true
#当值大于0时poolPreparedStatements会自动修改为true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size = 20
#配置扩展插件
#配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.druid.filters = stat,wall,slf4j
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.druid.connection-properties = druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat = true
#设置访问druid监控页的账号和密码,默认没有。(通过http://host:port/druid/index.html进入druid监控界面)
spring.datasource.druid.stat-view-servlet.login-username = admin
spring.datasource.druid.stat-view-servlet.login-password = admin
spring.datasource.druid.stat-view-servlet.enabled = true
# 开启web filter
spring.datasource.druid.web-stat-filter.enabled = true
########################## druid配置 end #################################