德洛伊
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。
Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。
Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。
Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,我们来重点介绍 Spring Boot 如何集成 Druid 数据源,如何实现数据库监控。
配置使用
1.配置德洛伊的包
2.会监听sql日志,需要log4j
3.在报错说明web版本不一样,需要配置spring-boot-starter-web
<!--德鲁伊数据连接池阿里巴巴的-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<!--德鲁伊数据连接池需要导入log4j因为有使用到-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置连接池,绑定和过滤器
//连接池类
@Configuration
public class DruidConfig {
//和之前的yaml绑定数据一样
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
//后台监控
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<StatViewServlet>(new StatViewServlet(), "/druid/*");
//后台需要有人登录,账号密码配置
HashMap<String, String> initParameters = new HashMap<>();
initParameters.put("loginUsername","sheep");
initParameters.put("loginPassword","5519");
//允许谁能访问
initParameters.put("allow","");
//禁止访问
/*initParameters.put("kuangsheng","1932.168.14521")*/
bean.setInitParameters(initParameters);
return bean;
}
//filter过滤器
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean=new FilterRegistrationBean<>();
bean.setFilter(new WebStatFilter());
//过滤哪些请求
Map<String,String> initParameters=new HashMap<>();
//这些不进行统计
initParameters.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParameters);
return bean;
}
}