Druid在连接池领域里可以说是比较火的,是阿里巴巴开源的JDBC连接池、监控组件,下面就简单介绍它一下。
它包括三部分:
-
DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
-
DruidDataSource 高效可管理的数据库连接池。
-
SQLParser 。
功能:
. 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
. 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
. 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
. SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
. 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。
属性跟dbcp连接池的差不多,不过加入了 filters 监控(value 值要有 stat),在web.xml里加入下面的Servlet就可查看例: http://localhost:8080/BenbearGame_test/。druid跟spring 一起用时( 只要配置initialSize,maxActive就可以),加入其实配置性能不好,官方文档里也不没加其它属性
<!--数据源org.apache.commons.dbcp.BasicDataSource com.alibaba.druid.pool.DruidDataSource -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/mybatis" />
<property name="username" value="root" />
<property name="password" value="admin" />
<!-- druid 连接池的 -->
<property name="filters" value="stat" />
<!-- 下面druid 和 dbcp 连接池通用的 ↓↓↓↓↓↓↓↓↓↓↓↓ -->
<!--maxActive: 最大连接数量 -->
<property name="maxActive" value="20" />
<!--initialSize: 初始化连接 -->
<property name="i