什么是 Druid ??
Druid 单词来源于西方古罗马的神话人物,中文常常翻译成德鲁伊,Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能,Druid 是一个为OLAP查询需求而设计的开源大数据系统,Druid 提供低延时的数据插入,实时的数据查询
Druid 使用Java开发,基于Jetty提供http rest服务,也提供了 Java/Python 等语言的工具包,Druid 是一个集群系统,使用zookeeper做节点管理和事件监控,这里只做简单介绍,详细了解请看:http://druid.io/docs/0.8.1/design/index.html
C3p0,Dbcp 与 Druid 三大连接池的区别 ??
DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP
C3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。
阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。Druid针对Oracle和MySql做了特别优化
详细请看:https://blog.csdn.net/qq_34359363/article/details/72763491 太长了。。自己看吧
怎么配置 Druid ??
Pom.xml 引入包
com.alibaba
druid
1.1.4
然后配置 application.properties
也可以选择 参考 :https://help.aliyun.com/document_detail/95125.html?spm=a2c4g.11186623.6.612.7cdc5d5eNz6Wwx
### Druid 连接池 数据源类别
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
###初始化大小,最小,最大
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
spring.datasource.testWhileidle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
###打开PSCache,并且指定上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
###配置监控统计拦截的filters ,去掉后监控界面的SQL 无法统计'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
###通过connectProperties属性打开mergesql功能,慢sql记录
spring.datasource.tomcat.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
然后配置 DruidConfiguration
package com.cs.druid.config;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @ClassName DruidConfiguration
* @Param Druid 连接池配置
* @Author linluochen
* @Date 2019/4/22 16:39
* @Version 1.0
**/
@Configuration // 声明这个类是个 xml 配置文件
public class DruidConfiguration {
@Bean //同等于 xml 文件中的 Bean 配置,Spring Boot 会把加上该注解的方法的返回值装进 Spring Ioc 的容器中
public ServletRegistrationBean druidStatViewServlet() {
//ServletRegistrationBean 提供类的进行注册
ServletRegistrationBean servlet = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
//添加初始化参数
//白名单:
servlet.addInitParameter("allow","127.0.0.1");
//IP黑名单(共存时,deny优先于allow)
//如果满足deny,就会提示 Sorry,you are not permitted to view this page.servlet.addInitParameter("deny","192.168.1.73")
//登录查看信息的账号密码
servlet.addInitParameter("loginUsername","admin");
servlet.addInitParameter("loginPassword","123456");
//是否能重置数据
servlet.addInitParameter("resetEnable","false");
return servlet;
}
@Bean
public FilterRegistrationBean druidStatFilter(){
FilterRegistrationBean filter = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则
filter.addUrlPatterns("/*");
//添加需要忽略的格式信息
filter.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filter;
}
}
最后运行测试是否配置成功,启动项目,然后输入地址:http://localhost:8080/druid 输入文件中配置的账号 admin 密码 123456
登陆成功后显示