Druid數據庫連接池
-
DRUID介紹
DRUID是阿里巴巴開源平台上一個數據庫連接池實現,它結合了C3P0、DBCP、PROXOOL等DB池的優點,同時加入了日誌監控,可以很好的監控DB池連接和SQL的執行情況,可以說是針對監控而生的DB連接池(據說是目前最好的連接池,不知道速度有沒有BoneCP快)。
-
使用方法
DB數據源的使用方法也就是2種,一種是在代碼中寫死通過NEW操作符創建DataSSource,然後set一些連接屬性,這裡不在累述;另外一種是基於SPRING的配置方法,然後讓SPRING的Context自動加載配置(以下配置文件默認都在項目根目錄下conf文件夾中)
1、屬性文件:application.properties(DataSource連接參數)
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.username=root
jdbc.password=1qaz!QAZ
2、SPRING配置文件:spring-base.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns=” //www.springframework.org/schema/beans”
xmlns:xsi=” //www.w3.org/2001/XMLSchema-instance” xmlns:batch=” //www.springframework.org/schema/batch”
xsi:schemaLocation=” //www.springframework.org/schema/beans
//www.springframework.org/schema/beans/spring-beans-4.0.xsd“>
<bean id=”propertyConfigure”
class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
<property name=”locations”>
<list>
<value>./conf/application.properties</value>
</list>
</property>
</bean>
<bean id=”dataSource” class=”com.alibaba.druid.pool.DruidDataSource”
init-method=”init” destroy-method=”close”>
<property name=”driverClassName” value=”${jdbc.driverClassName}” />
<property name=”url” value=”${jdbc.url}” />
<property name=”username” value=”${jdbc.username}” />
<property name=”password” value=”${jdbc.password}” />
<!– 配置初始化大小、最小、最大 –>
<property name=”initialSize” value=”1″ />
<property name=”minIdle” value=”1″ />
<property name=”maxActive” value=”10″ />
<!– 配置獲取連接等待超時的時間 –>
<property name=”maxWait” value=”10000″ />
<!– 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 –>
<property name=”timeBetweenEvictionRunsMillis” value=”60000″ />
<!– 配置一個連接在池中最小生存的時間,單位是毫秒 –>
<property name=”minEvictableIdleTimeMillis” value=”300000″ />
<property name=”testWhileIdle” value=”true” />
<!– 這裡建議配置為TRUE,防止取到的連接不可用 –>
<property name=”testOnBorrow” value=”true” />
<property name=”testOnReturn” value=”false” />
<!– 打開PSCache,並且指定每個連接上PSCache的大小 –>
<property name=”poolPreparedStatements” value=”true” />
<property name=”maxPoolPreparedStatementPerConnectionSize”
value=”20″ />
<!– 這裡配置提交方式,默認就是TRUE,可以不用配置 –>
<property name=”defaultAutoCommit” value=”true” />
<!– 驗證連接有效與否的SQL,不同的數據配置不同 –>
<property name=”validationQuery” value=”select 1 ” />
<property name=”filters” value=”stat” />
<property name=”proxyFilters”>
<list>
<ref bean=”logFilter” />
</list>
</property>
</bean>
<bean id=”logFilter” class=”com.alibaba.druid.filter.logging.Slf4jLogFilter”>
<property name=”statementExecutableSqlLogEnable” value=”false” />
</bean>
</beans>
上面紅色標註部分為監控DB池連接執行監控,後面在做詳細說明.