springboot利用druid連接池做數據庫密碼加密(password-callback)

springboot利用Druid連接池做數據庫密碼加密(password-callback)

Druid的簡介

Druid是一個JDBC組件,包括三部分

  1. DruidDriver 代理Driver,能夠提供基於Filter-Chain模式的插件體系。
  2. DruidDataSource 高效可管理的數據庫連接池。
  3. SQL Parser

Druid可以做什麼

  1. 監控數據庫訪問性能,Druid內置StatFilter插件,能夠詳細統計SQL的性能,對於線上分析數據庫有很大的幫助
  2. 替換了以前的連接池DBCP和C3P0,Druid是一個高效,功能強大,拓展性好的數據庫 ,在springboot 2.X版本內置hikari連接池情況下,Druid靠着好的拓展性依舊佔據着大部分的連接池市場
  3. 提供了數據庫加密,保密性一直是程序員比較頭疼的問題,在安全性上,Druid提供了PasswordCallback。讓數據庫密碼更加的安全
  4. SQL執行日誌,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監控你應用的數據庫訪問情況。

Druid的性能

目前的性能測試來看,Druid的性能還是處於中高水平,大概的性能排序可以理解爲:
hikariCP>druid>tomcat-jdbc>dbcp>c3p0

Druid的屬性

Druid的屬性簡單截圖
由於Druid的屬性太多,這裏挑幾個最常用的給大家介紹下

屬性 默認值 描述
username 連接數據庫的用戶名
password 連接數據庫的密碼
jdbcurl 同DBCP的jdbcUrl的屬性
driverClassName 根據url自動識別 這一項可配可不配,如果不配置druid會根據url自動識別dbType,然後選擇相應的driverClassName
initialSize 0 初始化時建立物理連接的個數。初始化發生在顯示調用init方法,或者第一次getConnection時 初始化連接:連接池啓動時創建的初始化連接數量
maxActive 8 最大連接池數量(Maximum number of Connections a pool will maintain at any given time.) *參見DBCP中的maxTotal屬性
minIdle 最小連接池數量
maxWait 獲取連接時最大等待時間,單位毫秒。配置了maxWait之後,缺省啓用公平鎖,併發效率會有所下降,如果需要可以通過配置useUnfairLock屬性爲true使用非公平鎖。
poolPreparedState- ments false 是否緩存preparedStatement,也就是PSCache。PSCache對支持遊標的數據庫性能提升巨大,比如說oracle。
removeAbandoned-Timeout 指定連接建立多長時間就需要被強制關閉
filters 屬性類型是字符串,通過別名的方式配置擴展插件,常用的插件有: 1)監控統計用的filter:stat 2)日誌用的filter:log4j 3)防禦sql注入的filter:wall

更多詳細的介紹可以參考http://www.iteye.com/magazines/90

但是發現其實password-callback其實用的不多,因爲加密這個概念在日常的開發中雖然有注意,但是對於不瞭解Druid的人。password-callback配置其實很少用,這篇文章中主要講一講password-callback的用法

password-callback用法

1. 生成祕鑰

通過jar包生成密文

 java -cp druid-1.1.17.jar com.alibaba.druid.filter.config.ConfigTools 密碼

123456生成的密文

2.密文放在yml配置中

簡單配置
在這裏簡單的使用就結束了,單數據情況下,Druid會自動加解密,所以不需要重寫方法,貼上Druid生成密文的方法:
生成方法
下一篇簡單介紹多數據源怎麼處理

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