- 环境准备
在开始配置SpringBoot集成Druid之前,需要确保已经满足以下条件:
- JDK 1.8 或更高版本
- Maven 3.x 或更高版本
-
SpringBoot 2.x 版本或更高版本
-
引入Druid依赖
为了集成Druid,需要在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
- 配置Druid监控数据源
在application.yml
或application.properties
文件中添加以下配置:
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒
time-between-eviction-runs-millis: 60000
# 配置连接在池中最小生存的时间,单位毫秒
min-evictable-idle-time-millis: 300000
# 配置一个连接在池中最大的存活时间,单位毫秒
max-evictable-idle-time-millis: 600000
# 配置监控统计拦截的filters,去掉后监控界面SQL监控无法查看
filters: stat,wall,log4j
# 配置合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
# 配置监控地址,默认只能本地访问
web-stat-filter:
enabled: true
url-pattern: /druid/*
reset-enable: true
# 配置sql监控
stat-view-servlet:
enabled: true
url-pattern: /druid/*
# 登录druid的账号和密码
username: admin
password: 123456
其中,配置项的意义如下:
url
:数据库连接URL。username
:数据库登录用户名。password
:数据库登录密码。driver-class-name
:JDBC驱动类名。initial-size
:初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时。min-idle
:最小空闲连接数,当连接数小于该值时,会批量创建连接,直到连接数达到该值。max-active
:最大连接数,连接池中最多允许的连接数。max-wait
:获取连接时的最大等待时间,单位毫秒。如果超时则抛出异常。time-between-eviction-runs-millis
:在进行一次检测时,如果连接已经空闲超过该时间,则将其移除。min-evictable-idle-time-millis
:连接在池中最小生存的时间,如果不满足该条件则将其移除。max-evictable-idle-time-millis
:连接在池中最大的存活时间,如果不满足该条件则将其移除。filters
:配置监控统计拦截的filters,去掉后监控界面SQL监控无法查看。use-global-data-source-stat
:配置合并多个DruidDataSource的监控数据。web-stat-filter
:配置监控地址,默认只能本地访问。stat-view-servlet
:配置SQL监控。username
:Druid监控中心登录账号。-
password
:Druid监控中心登录密码。 -
配置Druid监控中心
在SpringBoot启动类(如Application.java)添加如下代码:
@Bean
public ServletRegistrationBean registrationBean() {
return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
其中,StatViewServlet
和WebStatFilter
均为Druid提供的原生Servlet和过滤器,用来展示Druid的监控数据。
- 配置Druid性能监控
Druid提供了基于AOP和拦截器的性能监控功能,可以监控查询SQL的执行时间和执行次数,方便定位性能瓶颈。
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
在application.yml
或application.properties
文件中添加以下配置:
spring:
datasource:
druid:
proxy-filters:
- stat
filter:
stat:
slow-sql-millis: 5000
log-slow-sql: true
其中,proxy-filters
表示要开启的拦截器列表,可以同时开启多个拦截器,例如:
proxy-filters:
- log4j
- wall
filter.stat.slow-sql-millis
表示慢SQL阈值,单位毫秒,在该阈值内的SQL被视为快速SQL,超过该阈值的SQL被视为慢SQL,并打印慢日志。
filter.stat.log-slow-sql
表示是否打印慢SQL日志,可以设置为true或false。
- 配置Druid数据源监控
Druid提供了数据源的监控功能,可以通过Druid监控中心查看数据源的基本信息和性能指标。
在application.yml
或application.properties
文件中添加以下配置:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# 配置监控统计Log
filter:
stat:
log-slow-sql: true
slow-sql-millis: 2000
log-communicate: true
# Druid监控统计
druid:
# 配置Druid监控统计
web-stat-filter:
enabled: true
url-pattern: /druid/*
# 修改Druid监控统计页面登录用户名和密码
login-username: admin
login-password: admin
filter:
monitor:
enabled: true
stat:
enabled: true
log-slow-sql: true
slow-sql-millis: 1000
encoding:
enabled: true
config:
enabled: true
reset-enable: false
# Druid SQL监控
stat-view-servlet:
enabled: true
url-pattern: /druid/sql/*,/druid/*,/durid/*.html
# 查看druid使用的变量
reset-enable: false
# 白名单,不受监控,可以不配置,这里配置了,监控不拦截的路径
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
connection-properties:
druid.stat.mergeSql: true
druid.stat.slowSqlMillis: 1000
druid.stat.logSlowSql: true
druid.stat.slowSqlMillis: 1000
其中,druid.stat.mergeSql
表示是否合并SQL,将相似的SQL合并为一条,在Druid监控页面显示时更加方便。
druid.stat.slowSqlMillis
表示慢SQL阈值,单位毫秒,在该阈值内的SQL被视为快速SQL,超过该阈值的SQL被视为慢SQL。
druid.stat.logSlowSql
表示是否记录慢SQL日志,可以设置为true或false。
- 示例说明
以下示例为SpringBoot集成Druid在多个数据源中进行配置:
spring:
datasource:
# 主数据源
master:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/master
username: root
password: root
# 连接池配置
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
# 连接等待超时的时间
maxWait: 60000
# 连接在池中最大生存的时间
maxEvictableIdleTimeMillis: 300000
# 连接在池中最小生存的时间
minEvictableIdleTimeMillis: 600000
# 对于run方法中抛出的SQLException,让调用者感知到它
accessToUnderlyingConnectionAllowed: true
# 开启Druid监控统计
filter:
stat:
log-slow-sql: true
slow-sql-millis: 2000
log-communicate: true
# Druid监控统计
druid:
# 配置Druid监控统计
web-stat-filter:
enabled: true
url-pattern: /druid/*
# 修改Druid监控统计页面登录用户名和密码
login-username: admin
login-password: admin
filter:
monitor:
enabled: true
stat:
enabled: true
log-slow-sql: true
slow-sql-millis: 1000
encoding:
enabled: true
config:
enabled: true
reset-enable: false
# Druid SQL监控
stat-view-servlet:
enabled: true
url-pattern: /druid/sql/*,/druid/*,/durid/*.html
# 查看druid使用的变量
reset-enable: false
# 白名单,不受监控,可以不配置,这里配置了,监控不拦截的路径
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
connection-properties:
druid.stat.mergeSql: true
druid.stat.slowSqlMillis: 1000
druid.stat.logSlowSql: true
druid.stat.slowSqlMillis: 1000
# 从数据源
slave:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/slave
username: root
password: root
# 连接池配置
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
# 连接等待超时的时间
maxWait: 60000
# 连接在池中最大生存的时间
maxEvictableIdleTimeMillis: 300000
# 连接在池中最小生存的时间
minEvictableIdleTimeMillis: 600000
# 对于run方法中抛出的SQLException,让调用者感知到它
accessToUnderlyingConnectionAllowed: true
# 开启Druid监控统计
filter:
stat:
log-slow-sql: true
slow-sql-millis: 2000
log-communicate: true
# Druid监控统计
druid:
# 配置Druid监控统计
web-stat-filter:
enabled: true
url-pattern: /druid/*
# 修改Druid监控统计页面登录用户名和密码
login-username: admin
login-password: admin
filter:
monitor:
enabled: true
stat:
enabled: true
log-slow-sql: true
slow-sql-millis: 1000
encoding:
enabled: true
config:
enabled: true
reset-enable: false
# Druid SQL监控
stat-view-servlet:
enabled: true
url-pattern: /druid/sql/*,/druid/*,/durid/*.html
# 查看druid使用的变量
reset-enable: false
# 白名单,不受监控,可以不配置,这里配置了,监控不拦截的路径
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
connection-properties:
druid.stat.mergeSql: true
druid.stat.slowSqlMillis: 1000
druid.stat.logSlowSql: true
druid.stat.slowSqlMillis: 1000
以上示例中,master
和slave
均为数据源名称,可以在代码中使用@Qualifier
注解指定使用哪个数据源。
另外一个示例,是在application.properties
中集成Druid配置:
```properties
数据源配置
spring.datasource.dynamic.primary-driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.primary-url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.dynamic.primary-username=xxxx
spring.datasource.dynamic.primary-password=xxxx
druid 数据源配置
初始化大小,最小,最大
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=50
配置获取连接等待超时的时间
spring.datasource.druid.max-wait=60000
配置间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
配置连接在池中最小生存的时间,单位毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
配置一个连接在池中最大的存活时间,单位毫秒
spring.datasource.druid.max-evictable-idle-time-millis=600000
配置获取连接时的超时时间
spring.datasource.druid.login-timeout=60000
这里配置监控统计拦截的filters,去掉后监控界面SQL监控无法查看
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-init-sqls=SELECT NOW()
配置合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-conn-size=20
监控页面需要配置访问用户名和密码
spring.datasource.druid.username=xxxx
spring.datasource.druid.password=xxxx
监控页面
开启监控web页面配置
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/druid
配置监控用户名和密码,如果不配置,可以通过非登录状态访问监控页面
spring.datasource.druid.stat-view-servlet.login-username=xxxx
spring.datasource.druid.stat-view-servlet.login-password=xxxx
配置IP白名单,在webStatFilter中进行配置,否则无法访问监控页面
WebStatFilter参数能过滤一部分地址,但是无法做到全部限制,loginUsername和loginPassword:配置后,为http://ip:port/druid/login.html访问 Druid的监控页指定账户和密码
SQL监控
监控单个url调用耗时
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
是否显示SQL语句,调试时可以打开
spring.datasource.druid.stat-view-servlet.reset-enable=false
白名单,不拦截的请求地址
spring.datasource.druid.stat-view-s
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集成Druid配置(yaml版本配置文件)详解 - Python技术站