博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring-Boot整合mybatis(二),使用阿里的druid包,进行监控SQL执行速度
阅读量:6078 次
发布时间:2019-06-20

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

hot3.png

开始写了一篇使用默认的数据库连接池包,有兴趣的同学可以看看上一篇文章,这次我们介绍一下使用阿里的druid包,替换默认的数据库连接池,顺便进行监控SQL执行时间等....

 

先介绍一下开发环境:

  1. jdk版本是1.8
  2. springboot的版本是1.4.1
  3. 开发工具为 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

 

 

 

------------------------------------分割线-------------------------------------

 

上面的配置,只是让我们替换了数据源的配置而已,接下来,我们还需要配置一下监控

  1. 配置一个叫 DruidStatViewServlet 的servlet来进入监控页面
  2. 配置一个叫 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 

   就会进入监控见面,需要输入账号密码,输入在配置类配置的账号密码,会进入如下页面

211116_69b3_2278977.png

 

  就能监控一些东西了.

 

如果自己想配置一下其它的配置,可以到drui的github上进行查看,下面是地址:

 

到这,文章就结束了!

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

欢迎转载,请注明出处跟作者,谢谢!

 

 

转载于:https://my.oschina.net/u/2278977/blog/862036

你可能感兴趣的文章
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>
Python爬虫之BeautifulSoup
查看>>
《HTML 5与CSS 3权威指南(第3版·下册)》——第20章 使用选择器在页面中插入内容...
查看>>
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>
report widget not working for external users
查看>>
windows phone 摄像头得到图片是旋转90°
查看>>
Linux--sed使用
查看>>
没有显示器的情况下安装和使用树莓派
查看>>
Day006
查看>>
Q85 最大矩形
查看>>
jdbc连接一些问题和常规操作
查看>>
Lua之协同程序(coroutine)
查看>>