Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。
Spring Boot 2.0 以上默认使用 Hikari 数据源, Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,HikariCP重速度
Druid重安全和监控
。由于比较简单下面直接上代码。
一、导入依赖
<!-- druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
二、配置数据源
#Druid连接池配置
#Oracle数据源配置
#spring.datasource.druid.driver-class-name=oracle.jdbc.OracleDriver
#spring.datasource.druid.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
#spring.datasource.druid.username=账号
#spring.datasource.druid.password=密码
#Mysql数据源配置
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/数据库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.druid.username=账号
spring.datasource.druid.password=密码
#SpringBoot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=10
spring.datasource.druid.max-wait=10
#是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
#在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
spring.datasource.druid.pool-prepared-statements=false
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
#配置扩展插件:监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall
#如果允许时报错java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入log4j依赖即可,Maven 地址: https://mvnrepository.com/artifact/log4j/log4j
spring.datasource.druid.filters=stat,wall
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
这里需要我们自己为 com.alibaba.druid.pool.DruidDataSource
绑定全局配置文件中的参数,再添加到容器中,从而不再使用 SpringBoot 的自动生成;我们需要自己添加 DruidDataSource 组件到容器中,并绑定属性。
@Configuration
public class DruidConfig {
/*
将自定义的Druid数据源添加到容器中,不再让SpringBoot自动创建
绑定全局配置文件中的druid数据源属性到com.alibaba.druid.pool.DruidDataSource从而让它们生效
@ConfigurationProperties(prefix = "spring.datasource"):作用就是将全局配置到文件中
前缀为spring.datasource的属性值注入到com.alibaba.druid.pool.DruidDataSourc的同名参数中
*/
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
三、配置 Druid 数据源监控
Druid 数据源具有监控的功能,并提供了一个 web 界面方便用户查看,类似安装路由器时,人家也提供了一个默认的 web页面。所以第一步需要设置 Druid 的后台管理页面,比如登录账号、密码等;配置后台管理;
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean statViewServlet() {
//创建servlet注册实体
// 1.StatViewServlet是druid实现的一个Servlet容器,来显示druid的一些信息
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//设置ip白名单,为空时表示允许全部用户进入
servletRegistrationBean.addInitParameter("allow", "");
//设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
servletRegistrationBean.addInitParameter("deny", "ip地址");
//设置控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "账号");
servletRegistrationBean.addInitParameter("loginPassword", "密码");
//是否可以重置数据
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
//设置网站的过滤信息
@Bean
public FilterRegistrationBean statFilter() {
//创建过滤器
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//设置过滤器过滤路径
filterRegistrationBean.addUrlPatterns("/*");
//忽略过滤的形式
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
- 以上配置完成后就可以在浏览器中访问: http://localhost:8080/druid
- 出现登录页面后输入设置好的账号密码就会出现如下页面: