Hikari 性能上比 Druid 更好,但是 Druid 有配套的监控安全管理功能
1.pom.xml引入Druid依赖(maven repository官网搜索)
可以这个网址 https://mvnrepository.com/
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
2.application.yml中Druid全局配置
spring:
datasource:
username: root
password: 123456
# 针对mysql8版本以上的驱动包,需要指定时区
url: jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezong=GMT%2B8
# 针对mysql8版本以上的驱动包,需要指定新的驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
#配置Druid
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置, DataSourceProperties中没有相关属性,默认无法绑定
initialSize: 8
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,logback
maxPoolPreparedStatementPerConnectionSize: 25
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
通过测试类测试,发现数据源已经切换为 DruidDataSource , 但是 配置中 的属性没有与它绑定上
断点在 Connection connection = dataSource.getConnection();
3. 为解决这个问题 ,config/DruidConfig中自定义配置类, 将配置中属性与 DruidDataSource 属性绑
package com.cc.springboot.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
//绑定Druid相关信息
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
}
测试类中断点测试,发现绑定成功