版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Honnyee/article/details/88813884
这里介绍一个非常好用的java数据库连接池工具:druid,号称是Java语言中最好的数据库连接池
首先看一下关于druid的介绍
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。
Druid连接池是阿里巴巴内部唯一使用的连接池,在内部数据库相关中间件TDDL/DRDS 都内置使用强依赖了Druid连接池,经过阿里内部数千上万的系统大规模验证,经过历年双十一超大规模并发验证。
Druid连接池最初就是为监控系统采集jdbc运行信息而生的,它内置了StatFilter 功能,能采集非常完备的连接池执行信息Druid连接池内置了能和Spring/Servlet关联监控的实现,使得监控Web应用特别方便Druid连接池内置了一个监控页面,提供了非常完备的监控信息,可以快速诊断系统的瓶颈。
对于没有实战经验的新手来说十分合适
具体可看github https://github.com/alibaba/druid/wiki/Druid%E8%BF%9E%E6%8E%A5%E6%B1%A0%E4%BB%8B%E7%BB%8D
druid的使用非常简单
maven项目中加入以下内容:
<!--druid 数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.2</version>
</dependency>
在web.xml文件里加入以下内容打开监控功能:
扫描二维码关注公众号,回复:
5823094 查看本文章
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>druidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>/public/*,*.js,*.css,/druid*,*.jsp,*.swf,/file/</param-value>
</init-param>
<init-param>
<param-name>principalSessionName</param-name>
<param-value>staffId</param-value>
</init-param>
<init-param>
<param-name>profileEnable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>druidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后在Application文件里配置数据源
spring-mybatis.xml
<!-- 配置数据源 ,使用的alibaba的开源连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 基本属性 url、user、password -->
<property name="url" value="${master.jdbc.workUrl}"/>
<property name="username" value="${master.jdbc.workUsername}"/>
<property name="password" value="${master.jdbc.workPassword}"/>
<property name="dbType" value="sqlserver"/>
<property name="driverClassName" value="${master.jdbc.driverClassName}"/>
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="10"/>
<property name="minIdle" value="10"/>
<property name="maxActive" value="50"/>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="60000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!--配置timeBetweenLogStatsMillis>之后,DruidDataSource会定期把监控数据输出到日志中。-->
<property name="timeBetweenLogStatsMillis" value="300000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="proxyFilters" >
<list>
<ref bean="log-filter"/>
<ref bean="stat-filter"/>
</list>
</property>
<!--<!– 打开PSCache,并且指定每个连接上PSCache的大小 如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。–>-->
<!--<property name="poolPreparedStatements" value="false" />-->
<!--<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />-->
<!-- 配置监控统计拦截的filters -->
<property name="filters" value="wall,stat,log4j" />
</bean>
<!--druid监控-->
<bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">
<!--慢查询-->
<property name="mergeSql" value="true"/>
<property name="slowSqlMillis" value="1000"/>
<property name="logSlowSql" value="true"/>
</bean>
<!--将监控到的数据持久化到日志-->
<bean id="log-filter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">
<!--表示是否显示SQL语句-->
<!--<property name="statementExecutableSqlLogEnable" value="true"/>-->
<!--表示是否显示结果集-->
<property name="resultSetLogEnabled" value="false"/>
<!--所有DataSource相关的日志-->
<property name="dataSourceLogEnabled" value="true" />
<!--所有statement相关的日志-->
<property name="statementLogEnabled" value="true" />
<!--所有连接相关的日志-->
<property name="connectionLogEnabled" value="true" />
</bean>
配置完成后就可以使用了,可以观察到启动时druid会初始化10和连接,
然后在你 host://项目名/druid/index.html 就可以访问监控页面了
下图是官方提供的demo的页面