博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot2.0系列教程(二)Sprignboot使用Druid连接池
阅读量:4313 次
发布时间:2019-06-06

本文共 6630 字,大约阅读时间需要 22 分钟。

Hello大家好,本章我们将默认数据库连接池换成Druid连接池。另求各路大神指点,感谢

一:引入Druid依赖

打开上篇文章→中提到的pom.xml

找到<dependencies></dependencies>标签,在标签中添加Druid依赖

com.alibaba
druid
1.0.29

刚添加时  <version>1.0.29</version>  显示红色

然后鼠标右键选择Maven→Reimport进行依赖下载

下载成功后  <version>1.0.29</version> 显示黑色

二:配置数据源连接池信息

在application.properties文件中添加如下配置

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource#连接池配置spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20#连接等待超时时间spring.datasource.maxWait=60000#配置隔多久进行一次检测(检测可以关闭的空闲连接)spring.datasource.timeBetweenEvictionRunsMillis=60000#配置连接在池中的最小生存时间spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=false# 打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙spring.datasource.filters=stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

 

三:添加配置文件

在core→configurer下创建DruidDataSourceConfigurer.java 和DruidMonitorConfigurer.java 

内容如下:

DruidDataSourceConfigurer

package com.example.demo.core.configurer;import com.alibaba.druid.pool.DruidDataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import java.sql.SQLException;/** * @author 张瑶 * @Description: * @time 2018/4/18 15:16 */@Configurationpublic class DruidDataSourceConfigurer {    private Logger logger = LoggerFactory.getLogger(DruidDataSourceConfigurer.class);    @Value("${spring.datasource.url}")    private String dbUrl;    @Value("${spring.datasource.username}")    private String username;    @Value("${spring.datasource.password}")    private String password;    @Value("${spring.datasource.driverClassName}")    private String driverClassName;    @Value("${spring.datasource.initialSize}")    private int initialSize;    @Value("${spring.datasource.minIdle}")    private int minIdle;    @Value("${spring.datasource.maxActive}")    private int maxActive;    @Value("${spring.datasource.maxWait}")    private int maxWait;    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")    private int timeBetweenEvictionRunsMillis;    @Value("${spring.datasource.minEvictableIdleTimeMillis}")    private int minEvictableIdleTimeMillis;    @Value("${spring.datasource.validationQuery}")    private String validationQuery;    @Value("${spring.datasource.testWhileIdle}")    private boolean testWhileIdle;    @Value("${spring.datasource.testOnBorrow}")    private boolean testOnBorrow;    @Value("${spring.datasource.testOnReturn}")    private boolean testOnReturn;    @Value("${spring.datasource.poolPreparedStatements}")    private boolean poolPreparedStatements;    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")    private int maxPoolPreparedStatementPerConnectionSize;    @Value("${spring.datasource.filters}")    private String filters;    @Value("{spring.datasource.connectionProperties}")    private String connectionProperties;    @Bean    public DataSource getDataSource() {        DruidDataSource datasource = new DruidDataSource();        datasource.setUrl(this.dbUrl);        datasource.setUsername(username);        datasource.setPassword(password);        datasource.setDriverClassName(driverClassName);        //configuration        datasource.setInitialSize(initialSize);        datasource.setMinIdle(minIdle);        datasource.setMaxActive(maxActive);        datasource.setMaxWait(maxWait);        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);        datasource.setValidationQuery(validationQuery);        datasource.setTestWhileIdle(testWhileIdle);        datasource.setTestOnBorrow(testOnBorrow);        datasource.setTestOnReturn(testOnReturn);        datasource.setPoolPreparedStatements(poolPreparedStatements);        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);        try {            datasource.setFilters(filters);        } catch (SQLException e) {            logger.error("druid configuration initialization filter", e);        }        datasource.setConnectionProperties(connectionProperties);        return datasource;    }}

 

DruidMonitorConfigurer

package com.example.demo.core.configurer;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;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;/** * @author 张瑶 * @Description:Druid监控配置 * @time 2018/4/18 15:30 */@Configurationpublic class DruidMonitorConfigurer {    /**     * 注册ServletRegistrationBean     * @return     */    @Bean    public ServletRegistrationBean registrationBean() {        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");        /** 初始化参数配置,initParams**/        //白名单        bean.addInitParameter("allow", "127.0.0.1");//多个ip逗号隔开        //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.        //bean.addInitParameter("deny", "192.168.1.110");        //登录查看信息的账号密码.        bean.addInitParameter("loginUsername", "admin");        bean.addInitParameter("loginPassword", "123456");        //是否能够重置数据.        bean.addInitParameter("resetEnable", "false");        return bean;    }    /**     * 注册FilterRegistrationBean     * @return     */    @Bean    public FilterRegistrationBean druidStatFilter() {        FilterRegistrationBean bean = new FilterRegistrationBean(new WebStatFilter());        //添加过滤规则.        bean.addUrlPatterns("/*");        //添加不需要忽略的格式信息.        bean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");        return bean;    }}

 

四:启动服务器,访问数据连接池管理页面

打开浏览器,输入http://localhost:8080/druid    出现以下页面,为配置成功

账号为admin,密码为123456

可以查看数据源,SQL监控,URL监控等信息

 

项目地址

码云地址: 

GitHub地址: 

写文章不易,如对您有帮助,请帮忙点下star

结尾

springboot整合Druid已完成,后续功能接下来陆续更新,另求各路大神指点,感谢大家。

转载于:https://www.cnblogs.com/mrBeany/p/10649528.html

你可能感兴趣的文章
Lucene、ES好文章
查看>>
后视镜应该这样用!能帮避免80%的车祸!
查看>>
PDB调试python代码常用命令
查看>>
web性能优化-浏览器渲染原理
查看>>
Java第七次作业
查看>>
配置consul为windows服务
查看>>
架构之美阅读笔记02
查看>>
Mac中安装Vim7.4
查看>>
VC++工程文件说明
查看>>
C#基础(string)
查看>>
JavaScript-06-Dom操作
查看>>
MYSQL变量
查看>>
8、颠倒任意一个字符串的X个字符(第一个和倒数第一个颠倒,第二个和倒数第二个颠倒 ... )...
查看>>
mysql之索引
查看>>
openlayers3设置zoom不变
查看>>
vector
查看>>
怎样花两年时间去面试一个人
查看>>
算法速成系列
查看>>
The Pilots Brothers' refrigerator(dfs)
查看>>
usb 编程知识 总结
查看>>