1、在application.properties中配置数据库信息
##配置数据源,使用druid
# 驱动配置信息
spring.datasource.url=jdbc:mysql://192.168.6.209:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=****
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
##老版本的jdk驱动名:com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
2、配置连接池信息
#连接池配置信息
# 初始化时线程池的个数
spring.datasource.initialSize=5
# 连接池中连接数最小活跃数量
spring.datasource.minIdle=5
# 连接池中连接数最大活跃数量
spring.datasource.maxActive=20
# 配置获取连接等待超时的时间,单位是毫秒
spring.datasource.maxWait=60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
# 用来检测连接是否有效(要是一个查询语句,这个不设置,下面三个都不会生效)
spring.datasource.validationQuery=SELECT 1 FROM DUAL
# 进行数据库连接检测,检测数据库是否联通(推荐配置为true,不影响性能,并且能保证安全性)
spring.datasource.testWhileIdle=true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。设置为false
spring.datasource.testOnBorrow=false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能,设置为flase
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
# 显示sql语句
spring.datasource.logSlowSql=true
# 合并多个DruidDataSource的监控数据
spring.datasource.useGlobalDataSourceStat=true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
3、再pom.xml中引入依赖
<properties>
<druid-spring-version>1.1.10</druid-spring-version>
</properties>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-version}</version>
</dependency>
4、遇到的问题
1、如果需要登录druid的监控,还需要配置StatViewServlet和FilterRegistrationBean
@Configuration
public class DruidConfig {
/**
* 注册一个StatViewServlet
* @return
*/
@Bean
public ServletRegistrationBean DruidStatViewServlet(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
//添加IP白名单
servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
servletRegistrationBean.addInitParameter("deny","192.168.1.73");
//设置登录信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","admin123");
//是否能够重置数据(是否禁用HTML页面上的Rest All功能).
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
/**
* 注册一个FilterRegistrationBean
* @return
*/
@Bean
public FilterRegistrationBean druidStatFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
2、打开druid的监控页面,Sql监控不显示执行的sql语句
这是因为选择的druid版本有问题,现在最新的版本是1.1.16,该版本不显示执行的sql。选择1.1.10版本