什么是Druid?
Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒杀一切。而且Druid已经在阿里巴巴部署了超过600个应用,经过好几年年生产环境大规模部署的严苛考验!
druid.jar包集成步骤如下:
1、引入需要的jar包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
2、添加配置信息
##### dev 配置 #######
spring:
#注意现在最新版的driver是com.mysql.cj.jdbc.Driver
#旧版为com.mysql.jdbc.Driver
druid:
druidClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://135.149.*.*:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: **
password: **
#最大连接数
maxActive: 30
#最小连接数
minIdle: 5
#获取连接的最大等待时间
maxWait: 10000
#解决mysql8小时的问题
validationgQuery: SELECT 'X'
#空闲连接的检查时间间隔
timeBetweenEvictionRunsMillis: 60000
#空闲连接最小空闲时间
minEvictableIdleTimeMillis: 300000
3、新建配置类
package cn.huanzi.qch.baseadmin.config.druid;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.google.common.collect.Lists;
@Configuration
public class DruidConfig {
//这个注解读取配置文件前缀为prefix的配置,将外部的配置文件与这里绑定
@ConfigurationProperties(prefix = "spring.druid")
//容器的开启与关闭
@Bean(initMethod = "init",destroyMethod = "close")
public DruidDataSource dataSource(){
DruidDataSource dataSource=new DruidDataSource();
dataSource.setProxyFilters(Lists.newArrayList(statFilter()));
return dataSource;
}
//bean注解,成为spring的bean,利用filter将慢sql的日志打印出来
@Bean
public Filter statFilter(){
StatFilter statFilter=new StatFilter();
//多长时间定义为慢sql,这里定义为5s
statFilter.setSlowSqlMillis(3000);
//是否打印出慢日志
statFilter.setLogSlowSql(true);
//是否将日志合并起来
statFilter.setMergeSql(true);
return statFilter;
}
//这是配置druid的监控
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
}
}
4、运行项目,测试
输入:https://192.168.3.1:9999/druid/ 注意我这里用的https,你的项目如果是http的换成http
druid-spring-boot-starter包集成步骤如下:
1、jar包引入
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
2、添加配置信息
spring:
#注意现在最新版的driver是com.mysql.cj.jdbc.Driver
#旧版为com.mysql.jdbc.Driver
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
platform: mysql
url: jdbc:mysql://135.149.96.4:3306/test?serverTimezone=GMT%2B8&characterEncoding=utf-8
username: root
password: root
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
filters: stat,wall,log4j
logSlowSql: true
3、新建配置类
package cn.huanzi.qch.baseadmin.config.druid;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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;
/**
* 使用druid-spring-boot-starter时设置监控界面登录信息的方法
*/
@Configuration
public class DruidConfiguration {
@Bean
public ServletRegistrationBean druidServlet() {
//创建servlet注册实体
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// IP白名单
servletRegistrationBean.addInitParameter("allow", "192.168.*");
// IP黑名单(共同存在时,deny优先于allow)
//dservletRegistrationBean.addInitParameter("deny", "192.168.1.100");
//控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "admin");
//是否能够重置数据 禁用HTML页面上的“Reset All”功能
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
//创建过滤器
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//设置过滤器过滤路径
filterRegistrationBean.addUrlPatterns("/*");
//忽略过滤的形式
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
4、运行项目,测试
输入:https://192.168.3.1:9999/druid/ 注意我这里用的https,你的项目如果是http的换成http