开始写了一篇使用默认的数据库连接池包,有兴趣的同学可以看看上一篇文章,这次我们介绍一下使用阿里的druid包,替换默认的数据库连接池,顺便进行监控SQL执行时间等....
先介绍一下开发环境:
- jdk版本是1.8
- springboot的版本是1.4.1
- 开发工具为 intellij idea
首先我们先引入druid包的依赖,在项目的pom文件中添加以下内容:
com.alibaba druid 1.0.26
------------------------------------分割线-------------------------------------
引入依赖后,我们根据druid包的文档进行配置.首先,我们在properties配置文件增加如下数据库连接一些简单的参数
spring.datasource.url = jdbc:mysql://localhost:3306/springboot#替换默认的数据库连接池spring.datasource.type= com.alibaba.druid.pool.DruidDataSourcespring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driverClassName = com.mysql.jdbc.Driver# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化时建立物理连接的个数。spring.datasource.initialSize=5# 最小连接的个数。spring.datasource.minIdle=5# 最大连接的个数。spring.datasource.maxActive=10
------------------------------------分割线-------------------------------------
上面的配置,只是让我们替换了数据源的配置而已,接下来,我们还需要配置一下监控
- 配置一个叫 DruidStatViewServlet 的servlet来进入监控页面
- 配置一个叫 WebStatFilter 的过滤器来过滤一些请求
我们配置一个配置类,在里面返回一个 DruidStatViewServlet,WebStatFilter以及一个DataSource的bean,具体配置如下:
package com.zk.employee.utils.db;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import org.springframework.beans.factory.annotation.Value;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 javax.sql.DataSource;import java.sql.SQLException;/** * 创建人:贺小五 * 描述: * 数据源 druid 监控注册类, * 参照 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE * xml文件配置而成,如果要修改,进入上面的地址参考修改 */@Configurationpublic class DruidConfiguration { @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*"); //添加初始化参数:initParams //白名单: //servletRegistrationBean.addInitParameter("allow","127.0.0.1"); //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page. //servletRegistrationBean.addInitParameter("deny","192.168.1.73"); //登录查看信息的账号密码. servletRegistrationBean.addInitParameter("loginUsername","admin"); servletRegistrationBean.addInitParameter("loginPassword","123456"); //是否能够重置数据. servletRegistrationBean.addInitParameter("resetEnable","false"); return servletRegistrationBean; } /** * 配置过滤器 **/ @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); //过滤地址 filterRegistrationBean.addUrlPatterns("/*"); //不需要参与过滤的地址或者文件 filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } @Bean public DataSource druidDataSource(@Value("${spring.datasource.driverClassName}") String driver, @Value("${spring.datasource.url}") String url, @Value("${spring.datasource.username}") String username, @Value("${spring.datasource.password}") String password, @Value("${spring.datasource.initialSize}")int initialSize, @Value("${spring.datasource.minIdle}") int minIdle, @Value("${spring.datasource.maxActive}") int maxActive) { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driver); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); druidDataSource.setInitialSize(initialSize); druidDataSource.setMinIdle(minIdle); druidDataSource.setMaxActive(maxActive); try { druidDataSource.setFilters("stat, wall"); } catch (SQLException e) { e.printStackTrace(); } return druidDataSource; }}
PS:
因为我的配置类,不在默认路径下,所以,我还在启动类增加了扫描路径,在@SpringBootApplication增加了 scanBasePackages 扫描路径
启动完成后,会看到打印如下的话:
[main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
说明成功了,然后我们访问: http://localhost:8080/druid/index.html
就会进入监控见面,需要输入账号密码,输入在配置类配置的账号密码,会进入如下页面
就能监控一些东西了.
如果自己想配置一下其它的配置,可以到drui的github上进行查看,下面是地址:
到这,文章就结束了!
以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正
欢迎转载,请注明出处跟作者,谢谢!