Druid是目前比较流行的数据库连接池,不管是性能还是各项功能都超越其他连接池,有文章介绍各个连接池性能对比如下:hikariCP>druid>tomcat-jdbc>dbcp>c3p0。
Druid不仅具有良好的性能,而且还有sql拦截等功能,并提供接口与界面进行sql分析与统计。
使用
1.引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>
2.获取源码
github地址: https://github.com/alibaba/druid
3.配置连接池信息
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${dba.jdbc.driver}" />
<property name="url" value="${dba.jdbc.url}" />
<property name="username" value="${dba.jdbc.username}" />
<property name="password" value="${dba.las-im-factory.jdbc.password}" />
<property name="maxActive" value="10" /><!--最大连接数-->
<property name="minIdle" value="2" /><!--最小连接数-->
<property name="maxWait" value="15000" /><!--最大等待时长-->
<property name="timeBetweenEvictionRunsMillis" value="60000" /><!--60秒运行一次空闲连接回收器-->
<property name="minEvictableIdleTimeMillis" value="180000" /><!--连接空闲30分钟被回收-->
<property name="removeAbandoned" value="true" /><!--启动连接泄露关闭功能-->
<property name="removeAbandonedTimeout" value="600" /><!--连接超过10分钟未关闭,强行回收连接-->
<property name="logAbandoned" value="true" /><!-- 关闭abanded连接时输出错误日志 -->
<property name="filters" value="stat" /><!-- 添加sql监控过滤器 -->
</bean>
需要注意的是,maxIdle在druid是声明废弃的属性,连接池中的链接不再依赖maxIdle,而是maxActive。官方给出说明是:
maxIdle是Druid为了方便DBCP用户迁移而增加的,maxIdle是一个混乱的概念。连接池只应该有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分别相当于maxPoolSize和minPoolSize。
监控
Druid内置提供一个StatFilter,用于统计监控信息。别名是stat。
1.配置访问servlet
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<!-- 允许清空统计数据 -->
<param-name>resetEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!-- 用户名 -->
<param-name>loginUsername</param-name>
<param-value>druid</param-value>
</init-param>
<init-param>
<!-- 密码 -->
<param-name>loginPassword</param-name>
<param-value>druid</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>