介紹:Druid是阿裡推出的,強烈建議在WEB項目之中使用Druid,因為可以配置監控,但是如果不需要監控,任何的項目都可以使用Druid。
1.要想使用druid資料庫連接配接池,首先要引入相應的依賴庫
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
2.使用druid的資料庫連接配接,首先要修改database.properties配置檔案
# 定義資料庫驅動程式名稱
db.druid.driverClassName=org.gjt.mm.mysql.Driver
# 資料庫連接配接位址
db.druid.url=jdbc:mysql://localhost:3306/yootk
# 資料庫連接配接使用者名
db.druid.username=root
# 資料庫連接配接密碼
db.druid.password=mysqladmin
# 資料庫最大連接配接數
db.druid.maxActive=1
# 資料庫最小維持連接配接數
db.druid.minIdle=1
# 資料庫初始化連接配接
db.druid.initialSize=1
# 資料庫連接配接池最大等待時間
db.druid.maxWait=30000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接配接,機關是毫秒
db.druid.timeBetweenEvictionRunsMillis=60000
# 配置一個連接配接在池中最小生存的時間,機關是毫秒
db.druid.minEvictableIdleTimeMillis=300000
# 檢測查詢處理
db.druid.validationQuery=SELECT 'x'
# 申請連接配接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接配接是否有效。
db.druid.testWhileIdle=true
# 申請連接配接時執行validationQuery檢測連接配接是否有效,做了這個配置會降低性能
db.druid.testOnBorrow=false
# 歸還連接配接時執行validationQuery檢測連接配接是否有效,做了這個配置會降低性能
db.druid.testOnReturn=false
是否緩存preparedStatement,也就是PSCache。PSCache對支援遊标的資料庫性能提升巨大,比如說oracle。在mysql下建議關閉
db.druid.poolPreparedStatements=false
# 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache占用記憶體過多的問題,可以把這個數值配置大一些,比如說100
db.druid.maxPoolPreparedStatementPerConnectionSize=20
# 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用于防火牆
db.druid.filters=stat
3.修改spring-datasource.xml配置檔案,使用Druid的連接配接池進行管理。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init">
<property name="driverClassName" value="${db.druid.driverClassName}"/> <!-- 定義資料庫驅動程式 -->
<property name="url" value="${db.druid.url}"/> <!-- 資料庫連接配接位址 -->
<property name="username" value="${db.druid.username}"/> <!-- 資料庫連接配接使用者名 -->
<property name="password" value="${db.druid.password}"/> <!-- 資料庫連接配接密碼 -->
<property name="maxActive" value="${db.druid.maxActive}"/> <!-- 最大連接配接數 -->
<property name="minIdle" value="${db.druid.minIdle}"/> <!-- 最小連接配接池 -->
<property name="initialSize" value="${db.druid.initialSize}"/> <!-- 初始化連接配接大小 -->
<property name="maxWait" value="${db.druid.maxWait}"/> <!-- 最大等待時間 -->
<property name="timeBetweenEvictionRunsMillis" value="${db.druid.timeBetweenEvictionRunsMillis}" /> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接配接,機關是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${db.druid.minEvictableIdleTimeMillis}" /> <!-- 配置一個連接配接在池中最小生存的時間,機關是毫秒 -->
<property name="validationQuery" value="${db.druid.validationQuery}" /> <!-- 驗證SQL -->
<!-- 建議配置為true,不影響性能,并且保證安全性。 -->
<!-- 申請連接配接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接配接是否有效。 -->
<property name="testWhileIdle" value="${db.druid.testWhileIdle}" />
<property name="testOnBorrow" value="${db.druid.testOnBorrow}" /> <!-- 申請連接配接時執行validationQuery檢測連接配接是否有效,做了這個配置會降低性能 -->
<property name="testOnReturn" value="${db.druid.testOnReturn}" /> <!-- 歸還連接配接時執行validationQuery檢測連接配接是否有效,做了這個配置會降低性能 -->
<!-- 是否緩存preparedStatement,也就是PSCache。PSCache對支援遊标的資料庫性能提升巨大,比如說oracle。在mysql下建議關閉。 -->
<property name="poolPreparedStatements" value="${db.druid.poolPreparedStatements}" />
<!-- 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache占用記憶體過多的問題,可以把這個數值配置大一些,比如說100 -->
<property name="maxPoolPreparedStatementPerConnectionSize" value="${db.druid.maxPoolPreparedStatementPerConnectionSize}" />
<property name="filters" value="${db.druid.filters}" /> <!-- 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用于防火牆 -->
</bean>
</beans>
4.對于目前的程式代碼隻是在Java程式下運作,是以目前的配置已經可以保證程式提供有資料庫連接配接的支援了。
5.但是之是以使用Druid還有一個很大的因素在于,其可以實作資料庫通路的性能監控,要想實作監控就要往下繼續配置。這種性能監控主要是通過過濾器的形式配置的,再追加Servlet的啟動,修改web.xml配置檔案。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 1、SpringMVC本身是運作在Spring容器之中,是以需要定義一個Spring容器的基本配置檔案路徑 -->
<context-param> <!-- 配置全局的初始化參數,這個參數依靠ServletContext.getInitParameter()擷取 -->
<param-name>contextConfigLocation</param-name> <!-- 屬性标準名稱 -->
<!-- 所有的Spring配置檔案隻允許加載一次,不要重複加載 -->
<param-value>classpath:spring/spring-base.xml</param-value>
</context-param>
<!-- 2、通過WEB容器啟動的時候實作Spring容器的啟動操作 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 3、配置SpringMVC的分發處理Servlet,利用此Servlet找到所有的Action -->
<servlet>
<servlet-name>SpringMVCServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 此時配置的是SpringMVC的啟動檔案,該配置檔案不要重複的加載 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVCServlet</servlet-name>
<url-pattern>*.action</url-pattern> <!-- 設定通路處理路徑 -->
<url-pattern>/</url-pattern><!-- 靜态資源映射 -->
</servlet-mapping>
<!--如果想啟動Druid監控,則一定要有一個監控界面的啟動Servlet,是以要在此追加一個新的Servlet的定義-->
<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>
<!-- 4、配置項目中的編碼過濾器 -->
<filter>
<filter-name>EncodingFitler</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFitler</filter-name>
<url-pattern>/*</url-pattern>
</filter-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>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
6.啟動WEB項目,同時在浏覽器中輸入如下位址:http://localhost/druid/index.html
現在對于開發者執行的每一條SQL語句都會進行自動的監控,這樣就可以清楚的知道目前系統中資料庫連接配接池的狀态。
轉載于:https://www.cnblogs.com/wxl123/p/11111591.html