简介

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池。

Druid是一个JDBC组件,它包括三个部分:

1、基于Filter-Chain模式的插件体系。

2、DruidDataSource 高效可管理的数据库连接池。

3、SQLParser

功能

1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

所以Druid可以:

1、充当数据库连接池。

2、可以监控数据库访问性能

3、获得SQL执行日志

1、导入druid数据源

2、将数据源换为Druid

spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
driver-class-name: com.mysql.cj.jdbc.Driver
initialization-mode: always
type: com.alibaba.druid.pool.DruidDataSource
# schema:
# - classpath:department.sql # 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3、将yml配置文件中属性进行绑定

@Configuration
public class DruidConfig {
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource druid(){
return new DruidDataSource();
}
}

4、配置Druid的监控

 //配置Druid监控
//1.配置一个管理后台的servlet
@Bean
public ServletRegistrationBean StatViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
Map<String,String> initParams = new HashMap<String ,String >();
initParams.put("loginUsername","admin");
initParams.put("loginPassword","123456");
initParams.put("allow","");//默认允许所有
initParams.put("deny","192.168.1.1");
bean.setInitParameters(initParams);
return bean;
} //2.配置一个web监控的filter
@Bean
public FilterRegistrationBean WebStatFilter(){ FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<String ,String >();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}

5、测试

最新文章

  1. salesforce 零基础学习(六十)Wizard样式创建数据
  2. c#字符串操作方法实例
  3. JS中的 变量提升
  4. 安装tar.bz2文件
  5. 快速集成iOS基于RTMP的视频推流
  6. C#线程总结
  7. 用C++的类做三种优先队列的实现
  8. spring简单入门示例
  9. git submodule 使用过程中遇到的问题
  10. java底层学习
  11. JAVA面向对象-----接口与类、接口之间的关系
  12. Hadoop Yarn框架原理解析
  13. logistics回归简单应用(二)
  14. C++ LocalAlloc() &amp; LocalSize() &amp; LocalFree ()
  15. SpringBoot------ActiveMQ安装
  16. scrapy系列(四)——CrawlSpider解析
  17. C#编码、解码
  18. oracle创建表空间 授权
  19. BZOJ 2663: [Beijing wc2012]灵魂宝石
  20. bzoj5470 / P4578 [FJOI2018]所罗门王的宝藏

热门文章

  1. wpf 绑定除数据上下文外的属性
  2. ps切图的基本操作
  3. thinkphp 储存驱动
  4. Delphi GDI(一)
  5. NX二次开发-UFUN选择草图对话框UF_UI_select_sketch
  6. IntelliJ + Maven + 内Jetty 实现热部署项目
  7. hdu多校第一场1005(hdu6582)Path 最短路/网络流
  8. 机械手相机9点坐标标定-基于C#+EmguCV
  9. 剑指offer——10跳台阶演变
  10. java 8 lambda函数