您的位置:首页 > 编程语言 > Java开发

Spring-Boot整合mybatis(二),使用阿里的druid包,进行监控SQL执行速度

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

先介绍一下开发环境:

jdk版本是1.8

springboot的版本是1.4.1

开发工具为 intellij idea

首先我们先引入druid包的依赖,在项目的pom文件中添加以下内容:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>


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

引入依赖后,我们根据druid包的文档进行配置.首先,我们在properties配置文件增加如下数据库连接一些简单的参数

spring.datasource.url = jdbc:mysql://localhost:3306/springboot
#替换默认的数据库连接池
spring.datasource.type= com.alibaba.druid.pool.DruidDataSource
spring.datasource.username = root
spring.datasource.password = 123456
spring.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文件配置而成,如果要修改,进入上面的地址参考修改
*/
@Configuration
public 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上进行查看,下面是地址:https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5

到这,文章就结束了!

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

欢迎转载,请注明出处跟作者,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring SpringBoot druid