前言1:druid簡介
druid是阿里巴巴開源、java語言的數據庫連接池,除連接池功能外,druid還提供了強大的監控和擴展功能。官方號稱爲java語言最好的數據庫連接池
,其github地址:https://github.com/alibaba/druid。
前言2:本文內容
這篇文章分享在spring-boot項目中整合druid連接池,並實現監控功能的方法和步驟,主要包含以下四點:
- spring-boot整合druid;
- 使用druid加密數據庫密碼
- 使用日誌記錄sql實際執行的sql
- spring、session監控配置
一、創建spring-boot工程
1、工程使用開發工具爲IDEA,jdk1.8,spring-boot版本爲2.0.1.RELEASE;
2、新建spring-boot工程,工程type選擇Gradle Project,選擇導入的依賴如下:
3、創建完成後,build.gradle內容如下:
buildscript {
ext {
springBootVersion = '2.0.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'louie.share'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
runtime('org.springframework.boot:spring-boot-devtools')
runtime('org.postgresql:postgresql')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
二、整合druid
1、添加druid依賴,阿里巴巴爲druid提供了spring-boot的自動化配置依賴,只需引入即可(在早期版本中,需要我們編碼實現Configuration類)。
compile group: 'com.alibaba', name: 'druid-spring-boot-starter', version: '1.1.9'
2、數據庫配置
在spring-boot的配置文件application.yml中添加數據庫基本配置:
spring:
datasource:
druid:
url: jdbc:postgresql://127.0.0.1:5432/activiti-demo
username: louie
password: louie1234
driver-class-name: org.postgresql.Driver
注:以上配置中spring.datasource.druid.xxx爲druid爲spring-boot提供的配置屬性,您也可以不適用它們,使用spring-boot原有的配置屬性也是一樣的。
3、啓動服務,查看效果
執行Application類啓動spring-boot,瀏覽器訪問http://localhost:8080/druid/index.html查看監控效果:
截圖中的數據源選項卡可以查看到目前的數據庫連接池的情況,由於我們沒有做相關配置,這裏查看到的初始化連接大小、最小空閒連接數等信息是druid的默認值,在實際項目中就需要我們根據實際情況去修改application.yml文件了,配置的各項屬性在druid的wiki中均可查閱,這裏不再贅述。
druid提供了一份連接池的參考配置,點擊查看。
三、數據庫密碼加密
將數據庫密碼直接寫在配置文件中,從安全方面考慮是具有風險的,druid的configFilter具備數據庫密碼加密功能。
1、密碼加密
cmd進入druid包所在目錄,執行以下命令,其中PASSWORD爲您數據的密碼:
java -cp druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools PASSWORD
輸出如下,其中password即爲加密後的密碼,publicKey爲加密的公鑰:
privateKey:MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAjhd6PlxyNExMYJsPuIXnvJIVIL77q1ZE+YcZDFMaCMcK3hznsx89NrobrFXaEoHyLWuzRsD2q9/7tpv3fn+3owIDAQABAkBNS6I5OEr7/iFyUAfORjGY2BLcPGhlfUmKQB61IKPB781xWit3FtFocqKGde6iuRBjMGtDKINFD5CqUYYuIK8hAiEAxQ1r03pi+uAqSrb75pieniJuN9fljLlomE5+UGVN3ZMCIQC4mRRs9YsW0i9QjybqvzD615eIv8c9eQjJG67Ot4uHsQIhAJdJcptuv0d1i4LJciTc0AsAzDY7n5WnU9J7kScQX/PZAiEApw450uVfizaJhSEXugduXwOuah4MRBB9p+o6h27JgfECIHrHqsV57OZh9m2f28j5/Ax5O4xUDy9STvkWR/zvHhu5
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAI4Xej5ccjRMTGCbD7iF57ySFSC++6tWRPmHGQxTGgjHCt4c57MfPTa6G6xV2hKB8i1rs0bA9qvf+7ab935/t6MCAwEAAQ==
password:TT0HLMKz6fPGiaih/F7r/s6zRonc9XiViRY5abqJSZTANPppXpxuMntcwuXqFEZH15v/qlE3UNnHx7pb9I3xWA==
2、修改application.yml
修改包括三部分:密碼改爲加密後的密碼、開啓druid的configFilter、啓用加密並配置publicKey。修改後的配置爲:
spring:
datasource:
druid:
url: jdbc:postgresql://127.0.0.1:5432/activiti-demo
username: louie
password: TT0HLMKz6fPGiaih/F7r/s6zRonc9XiViRY5abqJSZTANPppXpxuMntcwuXqFEZH15v/qlE3UNnHx7pb9I3xWA== #加密後的密碼
driver-class-name: org.postgresql.Driver
filter:
config:
enabled: true #開啓configFilter
connection-properties: config.decrypt=true;config.decrypt.key=${public_key} #啓用加密,配置公鑰
jpa:
hibernate:
ddl-auto: none
database: postgresql
public_key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAI4Xej5ccjRMTGCbD7iF57ySFSC++6tWRPmHGQxTGgjHCt4c57MfPTa6G6xV2hKB8i1rs0bA9qvf+7ab935/t6MCAwEAAQ==
四、實現日誌記錄SQL
druid支持多種日誌框架的日誌輸出,在測試和產品上線初期,爲了方便我們查找錯誤可以將實際執行的sql通過日誌記錄下來,鏈接 Druid中使用log4j2進行日誌輸出 給出了詳細說明和log4j2.xml的詳細配置,這裏不再過多說明。
五、spring監控
Druid提供了Spring和Jdbc的關聯監控,基於spring AOP實現,可通過類型、方法名等多種方法配置攔截,其詳細說明可以點擊這裏查看,以下示例爲按方法名正則匹配攔截的配置:
spring
datasource
druid
aop-patterns: louie.share.druid.*
工程代碼已託管至github和碼雲中:
- github地址:https://github.com/louie-001/druid
- 碼雲地址:https://gitee.com/louie-sun/druid
歡迎溝通學習。