spring-boot整合阿里druid

前言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,選擇導入的依賴如下:


new project dependencies
new project dependencies

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監控數據源
druid監控數據源

截圖中的數據源選項卡可以查看到目前的數據庫連接池的情況,由於我們沒有做相關配置,這裏查看到的初始化連接大小、最小空閒連接數等信息是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.*
spring監控
spring監控

工程代碼已託管至github和碼雲中:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章