【轉】spring boot使用Druid和監控配置
Druid是Java語言中最好的資料庫連線池,並且能夠提供強大的監控和擴充套件功能。
Spring Boot預設的資料來源是:org.apache.tomcat.jdbc.pool.DataSource
業界把 Druid 和 HikariCP 做對比後,雖說 HikariCP 的效能比 Druid 高,但是因為 Druid 包括很多維度的統計和分析功能,所以這也是大家都選擇使用它的原因。
下面來說明如何在 spring Boot 中配置使用Druid
整體步驟:
(1) —— Druid簡單介紹,具體看官網;
(2) —— 在pom.xml配置druid依賴包;
(3) —— 配置application.properties加入資料庫源型別等引數;
(4) —— 編寫druid servlet和filter提供監控頁面訪問;
(5) —— 輸入地址進行測試;
(1)新增Maven依賴 (或jar包)
1 2 3 4 5 |
<
dependency
>
<
groupId
>com.alibaba</
groupId
>
<
artifactId
>druid</
artifactId
>
<
version
>1.0.18</
version
>
</
dependency
>
|
(2)、配置資料來源相關資訊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 資料庫訪問配置
# 主資料來源,預設的
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-
class
-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:
//localhost:3306/test
spring.datasource.username=root
spring.datasource.password=
123456
# 下面為連線池的補充設定,應用到上面所有資料來源中
# 初始化大小,最小,最大
spring.datasource.initialSize=
5
spring.datasource.minIdle=
5
spring.datasource.maxActive=
20
# 配置獲取連線等待超時的時間
spring.datasource.maxWait=
60000
# 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=
60000
# 配置一個連線在池中最小生存的時間,單位是毫秒
spring.datasource.minEvictableIdleTimeMillis=
300000
spring.datasource.validationQuery=SELECT
1
FROM DUAL
spring.datasource.testWhileIdle=
true
spring.datasource.testOnBorrow=
false
spring.datasource.testOnReturn=
false
# 開啟PSCache,並且指定每個連線上PSCache的大小
spring.datasource.poolPreparedStatements=
true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=
20
# 配置監控統計攔截的filters,去掉後監控介面sql無法統計,
'wall'
用於防火牆
spring.datasource.filters=stat,wall,log4j
# 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
spring.datasource.connectionProperties=druid.stat.mergeSql=
true
;druid.stat.slowSqlMillis=
5000
# 合併多個DruidDataSource的監控資料
#spring.datasource.useGlobalDataSourceStat=
true
|
需要注意的是:spring.datasource.type舊的spring boot版本是不能識別的
後話1(更新於2016年8月20日):很抱歉的是新版本也廢棄了這個屬性,配置完之後啟動就會報錯,所以現在知道的情況是1.2版本不支援,1.3版本支援,1.4版本不支援。具體資訊可以看連結:http://stackoverflow.com/questions/39032368/not-able-to-set-spring-datasource-type-in-spring-boot-1-4 )
後話2(更新於2016年9月24日):spring boot 1.4.1重新支援了spring.datasource.type屬性,從1.4.0的啟動報異常到1.4.1支援,個人覺得這個應該是官方在升級的時候,影響到了spring.datasource.type屬性的使用。不管怎麼樣,希望spring boot做的越來越好。
這時候啟動應用就可以看到看到列印資訊就是使用我們配置的資料來源了:
[main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
(3) 配置監控統計功能
配置Servlet
如下是在SpringBoot專案中基於註解的配置,如果是web.xml配置,按規則配置即可。
com.kfit.base.servlet.DruidStatViewServlet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|