Spring Boot快速配置Druid数据库连接池

本文主要内容为在Spring Boot中配置Druid数据库连接池,并使用Druid部分特性

Druid是阿里巴巴开源的一款优秀的连接池,能够提供强大的监控和扩展功能,现在很多项目中都用到。下面将介绍如何在Spring Boot中配置并使用该连接池。

版本

  • Spring Boot: 2.1.3
  • Druid: 1.1.4
  • maven:3.6.0

maven引入

Druid提供了spring-boot-srarter用来快速配置Druid

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.14</version>
</dependency>

配置application.yml

在application.properties或application.yml中配置相关属性,这里我用的是yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
spring:
datasource:
#druid相关配置
druid:
url: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8
username: #数据库用户名
password: #用ConfigFilter加密后的密码
initial-size: 1 #配置初始化大小
min-idle: 1
max-active: 20
max-wait: 60000 #获取连接等待超时时间
time-between-eviction-runs-millis: 60000 #间隔多久进行一次检测,检测需要关闭的空闲连接
min-evictable-idle-time-millis: 300000 #一个连接在池中最小生存的时间
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false

#打开PSCache,并指定每个连接上PSCache的大小。oracle设为 true,mysql设为false。分库分表较多推 荐设置为false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20

filters: stat,config #监控统计拦截的filters

#配置,并设置RSA公钥
#获取秘钥过程详见 https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
connectionProperties: config.decrypt=true;config.decrypt.key=公钥的值

#监控设置
stat-view-servlet:
#是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密 码或白名单以保障安全)
enabled: true
url-pattern: /druid/*
reset-enable: true #允许清空统计数据
login-username: druid #用户名
login-password: druid #密码
allow: 127.0.0.1 #白名单
deny: #黑名单(优先级高于白名单)

如何配置多数据源

  1. 添加配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
spring:
datasource:
url:
username:
password:

# Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖
...
druid:
initial-size: 1
max-active: 5
...

# Druid 数据源 1 配置,继承spring.datasource.druid.* 配置,相同则覆盖
...
one:
max-active: 10
max-wait: 10000
...

# Druid 数据源 2 配置,继承spring.datasource.druid.* 配置,相同则覆盖
...
two:
max-active: 20
max-wait: 20000
...

强烈注意:Spring Boot 2.X 版本不再支持配置继承,多数据源的话每个数据源的所有配置都需要单独配置,否则配置不会生效

  1. 创建数据源
1
2
3
4
5
6
7
8
9
10
11
@Primary
@Bean
@ConfigurationProperties("spring.datasource.druid.one")
public DataSource dataSourceOne(){
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.druid.two")
public DataSource dataSourceTwo(){
return DruidDataSourceBuilder.create().build();
}

使用

访问http://localhost:8080/druid

进入登录页面,输入在stat-view-servlet:中配置的login-username,login-password

1552483854109

进入监控页面

1552483947011

参考