SpringBoot Druid配置過程圖解
更新時間:2020年03月26日 09:31:39 作者:趙小胖0914
這篇文章主要介紹了SpringBoot Druid配置過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Druid是阿里開源的一個JDBC應用組件, 其包括三部分:
- DruidDriver: 代理Driver,能夠提供基于Filter-Chain模式的插件體系。
- DruidDataSource: 高效可管理的數據庫連接池。
- SQLParser: 實用的SQL語法分析
通過Druid連接池中間件, 我們可以實現(xiàn):
- 可以監(jiān)控數據庫訪問性能,Druid內置提供了一個功能強大的StatFilter插件,能夠詳細統(tǒng)計SQL的執(zhí)行性能,這對于線上分析數據庫訪問性能有幫助。
- 替換傳統(tǒng)的DBCP和C3P0連接池中間件。Druid提供了一個高效、功能強大、可擴展性好的數據庫連接池。
- 數據庫密碼加密。直接把數據庫密碼寫在配置文件中,容易導致安全問題。DruidDruiver和DruidDataSource都支持PasswordCallback。
- SQL執(zhí)行日志,Druid提供了不同的LogFilter,能夠支持Common-Logging、Log4j和JdkLog,你可以按需要選擇相應的LogFilter,監(jiān)控你應用的數據庫訪問情況。
- 擴展JDBC,如果你要對JDBC層有編程的需求,可以通過Druid提供的Filter-Chain機制,很方便編寫JDBC層的擴展插件。
配置代碼如下
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${url}:${port}/${數據庫名}?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=true
username: ${username}
password: ${password}
druid:
initial-size: 10 # 初始化時建立物理連接的個數。初始化發(fā)生在顯示調用init方法,或者第一次getConnection時
min-idle: 10 # 最小連接池數量
maxActive: 200 # 最大連接池數量
maxWait: 60000 # 獲取連接時最大等待時間,單位毫秒。配置了maxWait之后,缺省啟用公平鎖,并發(fā)效率會有所下降,如果需要可以通過配置
timeBetweenEvictionRunsMillis: 60000 # 關閉空閑連接的檢測時間間隔.Destroy線程會檢測連接的間隔時間,如果連接空閑時間大于等于minEvictableIdleTimeMillis則關閉物理連接。
minEvictableIdleTimeMillis: 300000 # 連接的最小生存時間.連接保持空閑而不被驅逐的最小時間
validationQuery: SELECT 1 FROM DUAL # 驗證數據庫服務可用性的sql.用來檢測連接是否有效的sql 因數據庫方言而差, 例如 oracle 應該寫成 SELECT 1 FROM DUAL
testWhileIdle: true # 申請連接時檢測空閑時間,根據空閑時間再檢測連接是否有效.建議配置為true,不影響性能,并且保證安全性。申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRun
testOnBorrow: false # 申請連接時直接檢測連接是否有效.申請連接時執(zhí)行validationQuery檢測連接是否有效,做了這個配置會降低性能。
testOnReturn: false # 歸還連接時檢測連接是否有效.歸還連接時執(zhí)行validationQuery檢測連接是否有效,做了這個配置會降低性能。
poolPreparedStatements: true # 開啟PSCache
maxPoolPreparedStatementPerConnectionSize: 20 #設置PSCache值
connectionErrorRetryAttempts: 3 # 連接出錯后再嘗試連接三次
breakAfterAcquireFailure: true # 數據庫服務宕機自動重連機制
timeBetweenConnectErrorMillis: 300000 # 連接出錯后重試時間間隔
asyncInit: true # 異步初始化策略
remove-abandoned: true # 是否自動回收超時連接
remove-abandoned-timeout: 1800 # 超時時間(以秒數為單位)
transaction-query-timeout: 6000 # 事務超時時間
filters: stat,wall,log4j2
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
web-stat-filter:
enabled: true
url-pattern: "/*"
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
stat-view-servlet:
url-pattern: "/druid/*"
allow:
deny:
reset-enable: false
login-username: admin
login-password: admin
druid監(jiān)控數據的外部化調用
@RestController
public class DruidStatController {
@GetMapping("/stat")
public Object druidStat() {
// DruidStatManagerFacade#getDataSourceStatDataList 該方法可以獲取所有數據源的監(jiān)控數據
return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();
}
}
圖例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- 使用SpringBoot簡單了解Druid的監(jiān)控系統(tǒng)的配置方法
- springboot2.0使用Hikari連接池的方法(替換druid)
- springboot 配置DRUID數據源的方法實例分析
- spring boot基于DRUID實現(xiàn)數據源監(jiān)控過程解析
- SpringBoot整合Druid數據源過程詳解
- Spring Boot 整合 Druid過程解析
- Spring Boot 自定義數據源DruidDataSource代碼
- 通過springboot+mybatis+druid配置動態(tài)數據源
- SpringBoot配置Druid數據監(jiān)控代碼實例
相關文章
Springboot整合Jedis實現(xiàn)單機版或哨兵版可切換配置方法
這篇文章主要介紹了Springboot整合Jedis實現(xiàn)單機版或哨兵版可切換配置方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-11-11
java?Map接口子類HashMap遍歷與LinkedHashMap詳解
這篇文章主要介紹了java?Map接口子類HashMap遍歷與LinkedHashMap詳解,Map接口下的集合與Collection接口下的集合,它們存儲數據的形式不同,感興趣的小伙伴可以參考下面文章詳細內容介紹2022-06-06
使用RestTemplate調用RESTful?API的代碼示例
在開發(fā)?Web?應用程序時,調用?RESTful?API?是一個常見的任務,本文將介紹如何使用?RestTemplate?調用?RESTful?API,并提供示例代碼,感興趣的同學可以跟著小編一起來看看2023-06-06
Java的動態(tài)代理和靜態(tài)代理及反射常用API詳解
這篇文章主要介紹了Java的動態(tài)代理和靜態(tài)代理及反射常用API詳解,動態(tài)代理是一種在運行時動態(tài)生成代理對象的技術,它是一種設計模式,用于在不修改原始對象的情況下,通過代理對象來間接訪問原始對象,并在訪問前后執(zhí)行額外的操作,需要的朋友可以參考下2024-01-01

