Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。
业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因。
下面来说明如何在 spring Boot 中配置使用Druid
1、添加Maven依赖 (或jar包)
<dependency>
<groupId>com.alibaba
</groupId>
<artifactId>druid
</artifactId>
<version>1.0.18
</version>
</dependency>
2、配置数据源相关信息
# 数据库访问配置
# 主数据源,默认的
spring
.datasource.type=
com.alibaba.druid.pool.DruidDataSource
spring
.datasource.driver-class-name=
com.mysql.jdbc.Driver
spring
.datasource.url=jdbc:mysql://localhost:
3306/test
spring
.datasource.username=root
spring
.datasource.password=
123456
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
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.connectionProperties=druid
.stat.mergeSql=true
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true
3、配置监控统计功能
配置Servlet
如下是在SpringBoot项目中基于注解的配置,如果是web.xml配置,按规则配置即可。
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import com.alibaba.druid.support.http.StatViewServlet;
/**
* StatViewServlet
*
* @author 单红宇(365384722)
* @myblog http://blog.csdn.net/catoop/
* @create 2016年3月17日
*/
@SuppressWarnings(
"serial")
@WebServlet(urlPatterns =
"/druid/*",
initParams={
@WebInitParam(name=
"allow",value=
"192.168.16.110,127.0.0.1"),
@WebInitParam(name=
"deny",value=
"192.168.16.111"),
@WebInitParam(name=
"loginUsername",value=
"shanhy"),
@WebInitParam(name=
"loginPassword",value=
"shanhypwd"),
@WebInitParam(name=
"resetEnable",value=
"false")
})
public class DruidStatViewServlet extends StatViewServlet {
}
配置Filter
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import com.alibaba.druid.support.http.WebStatFilter;
/**
* Druid的StatFilter
*
* @author 单红宇(365384722)
* @myblog http://blog.csdn.net/catoop/
* @create 2016年3月17日
*/
@WebFilter(filterName=
"druidWebStatFilter",urlPatterns=
"/*",
initParams={
@WebInitParam(name=
"exclusions",value=
"*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")
})
public class DruidStatFilter extends WebStatFilter {
}
然后启动项目后访问 http://yourdomain/druid/index.html 即可查看数据源及SQL统计等。 截图如下:
4、更多使用和常见问题
详见:https://github.com/alibaba/druid/wiki/常见问题
本文只是简单的对如何使用Druid做了说明,其实官方包括各种很细致的说明,建议大家还是多看看官方说明以官方为准,国人开发的说明自然也都是中文,通俗易懂。
官方资料直达地址:
Druid 首页 https://github.com/alibaba/druid/wiki/首页
Druid 常见问题 https://github.com/alibaba/druid/wiki/常见问题
Druid 发布版 https://github.com/alibaba/druid/releases
Druid 源码 https://github.com/alibaba/druid
转载请注明原文地址: https://ju.6miu.com/read-11913.html