Spring Boot 整合 Druid 并開啟監(jiān)控
Druid 是一個由阿里巴巴開源的高性能數(shù)據(jù)庫連接池,它不僅提供了高效的連接管理功能,還自帶了強大的監(jiān)控和統(tǒng)計特性。將 Druid 與 Spring Boot 結(jié)合使用,可以顯著提高應(yīng)用程序的數(shù)據(jù)訪問性能,并且通過內(nèi)置的監(jiān)控頁面,開發(fā)者能夠?qū)崟r監(jiān)控數(shù)據(jù)庫連接的狀態(tài)、SQL 執(zhí)行情況等重要信息。
1. 引言
隨著互聯(lián)網(wǎng)應(yīng)用的快速發(fā)展,對數(shù)據(jù)庫連接池的要求也越來越高。傳統(tǒng)的連接池可能無法滿足現(xiàn)代應(yīng)用對于高性能和高可用性的需求。而 Druid 憑借其優(yōu)秀的性能優(yōu)化、詳細的監(jiān)控數(shù)據(jù)以及靈活的配置選項,成為了許多開發(fā)者的首選。接下來,我們將一步步展示如何在 Spring Boot 中引入 Druid,并啟用它的監(jiān)控功能。
2. 添加依賴
首先,在你的 pom.xml 文件中添加 Druid 的 Maven 依賴:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.24</version>
</dependency>如果你使用的是 Gradle 構(gòu)建工具,則可以在 build.gradle 文件中添加如下內(nèi)容:
implementation 'com.alibaba:druid-spring-boot-3-starter:1.2.24'
3. 配置數(shù)據(jù)源
接下來,在 application.properties 或 application.yml 文件中配置 Druid 數(shù)據(jù)源的相關(guān)參數(shù)。這里以 .properties 文件為例:
# Druid 數(shù)據(jù)源配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 spring.datasource.druid.test-on-borrow=true spring.datasource.druid.validation-query=SELECT 1 FROM DUAL # 監(jiān)控頁面設(shè)置 spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.login-username=druid spring.datasource.druid.stat-view-servlet.login-password=d1234
yaml示例:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false
username: root
password: 1234
type: com.alibaba.druid.pool.DruidDataSource
druid:
test-on-borrow: true
validation-query: SELECT 1 FROM DUAL
web-stat-filter:
enabled: true
stat-view-servlet:
enabled: true
login-username: druid
login-password: d1234上述配置項包括了連接池的基本參數(shù)(如初始大小、最小空閑連接數(shù)、最大活動連接數(shù)等),同時也啟用了 Druid 的 Web 統(tǒng)計過濾器和統(tǒng)計視圖 Servlet,并設(shè)置了登錄用戶名和密碼用于訪問監(jiān)控頁面。
4. 開啟監(jiān)控功能
為了更好地管理和監(jiān)控 Druid 連接池的工作狀態(tài),我們需要開啟 Druid 提供的監(jiān)控功能。這可以通過配置文件中的幾個關(guān)鍵屬性來實現(xiàn):
- WebStatFilter:用于收集 Web 應(yīng)用程序的 SQL 慢查詢?nèi)罩尽?/li>
- StatViewServlet:提供了一個可視化的監(jiān)控頁面,可以查看連接池的各項指標。
確保在 application.properties 或 application.yml 中啟用了這兩個組件:
# 啟用 WebStatFilter 和 StatViewServlet spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.stat-view-servlet.enabled=true
此外,還可以進一步自定義監(jiān)控頁面的安全策略,比如允許或限制特定 IP 地址訪問、設(shè)置更多的登錄憑證等。
5. 自定義 Druid 配置(可選)
如果默認配置不能滿足你的需求,你可以創(chuàng)建一個自定義的 Druid 配置類來覆蓋默認設(shè)置。例如:
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource.druid")
@Bean
public DruidDataSource druidDataSource() {
return new DruidDataSource();
}
// 如果需要,可以在這里添加更多配置,如過濾器、攔截器等
@Bean
public ServletRegistrationBean<StatViewServlet> statViewServlet() {
ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
Map<String, String> params = new HashMap<>();
params.put("loginUsername", username);
params.put("loginPassword", password);
params.put("allow", "localhost");
params.put("deny", "");
bean.setInitParameters(params);
return bean;
}
@Bean
public FilterRegistrationBean<Filter> webStatFilter() {
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<Filter>();
bean.setFilter(new WebStatFilter());
Map<String, String> params = new HashMap<>();
params.put("exclusions", "*.js,*.css,/druid/*");
bean.setUrlPatterns(Arrays.asList("/*"));
bean.setInitParameters(params);
return bean;
}
}6. 訪問監(jiān)控頁面
完成上述配置后,啟動 Spring Boot 應(yīng)用程序,然后打開瀏覽器并訪問以下 URL 來查看 Druid 的監(jiān)控頁面:
http://localhost:8080/druid/
使用之前設(shè)置的用戶名和密碼登錄后,你將看到一個包含詳細連接池信息和 SQL 查詢統(tǒng)計的界面。通過這個頁面,你可以輕松地監(jiān)控數(shù)據(jù)庫連接的狀態(tài)、分析 SQL 性能瓶頸等問題。

7. 注意事項
- 生產(chǎn)環(huán)境安全:在生產(chǎn)環(huán)境中部署時,請務(wù)必加強對監(jiān)控頁面的訪問控制,避免敏感信息泄露。
- 性能影響:雖然 Druid 的監(jiān)控功能非常有用,但在高并發(fā)場景下可能會對系統(tǒng)性能產(chǎn)生一定影響。因此,在實際應(yīng)用中應(yīng)權(quán)衡利弊,合理配置監(jiān)控級別。
- 更新維護:定期檢查 Druid 版本更新,及時修復已知漏洞和問題,保持系統(tǒng)的穩(wěn)定性和安全性。
8. 總結(jié)
通過以上步驟,我們成功地在 Spring Boot 應(yīng)用中集成了 Druid 數(shù)據(jù)庫連接池,并開啟了其監(jiān)控功能。這不僅提高了數(shù)據(jù)庫訪問的效率,還為開發(fā)者提供了寶貴的調(diào)試和優(yōu)化工具。希望這篇文章能夠幫助你。
更多配置或使用請參考官方文檔:https://github.com/alibaba/druid
到此這篇關(guān)于Spring Boot 整合 Druid 并開啟監(jiān)控的文章就介紹到這了,更多相關(guān)Spring Boot Druid開啟監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot集成Druid監(jiān)控慢SQL的詳細過程
- SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例
- Springboot整合Druid實現(xiàn)對訪問的監(jiān)控方式
- SpringBoot集成Druid實現(xiàn)監(jiān)控功能的示例代碼
- SpringBoot3整合Druid監(jiān)控功能的項目實踐
- SpringBoot整合Druid實現(xiàn)數(shù)據(jù)庫連接池和監(jiān)控
- springboot項目中實現(xiàn)訪問druid內(nèi)置監(jiān)控頁面
- SpringBoot集成Druid監(jiān)控頁面最小化配置操作
- SpringBoot配置Druid數(shù)據(jù)監(jiān)控代碼實例
- 使用SpringBoot簡單了解Druid的監(jiān)控系統(tǒng)的配置方法
- spring boot基于DRUID實現(xiàn)數(shù)據(jù)源監(jiān)控過程解析
相關(guān)文章
SpringCloud中的分布式鎖用法示例詳解(Java+Redis SETNX命令)
在Spring Cloud項目中,使用Java和Redis結(jié)合實現(xiàn)的分布式鎖可以確保訂單的一致性和并發(fā)控制,分布式鎖的使用能夠在多個實例同時提交訂單時,僅有一個實例可以成功進行操作,本文給大家介紹Spring,Cloud中的分布式鎖用法詳解(Java+Redis SETNX命令),感興趣的朋友一起看看吧2023-10-10
詳解如何在SpringBoot控制器中處理用戶數(shù)據(jù)
在 Spring Boot 應(yīng)用開發(fā)中,控制器(Controller)扮演著至關(guān)重要的角色,它負責接收用戶請求、處理數(shù)據(jù)并返回響應(yīng),本文將深入淺出地講解如何在 Spring Boot 控制器中處理用戶數(shù)據(jù),包括獲取請求參數(shù)、處理表單提交、返回 JSON 數(shù)據(jù)等常見場景,需要的朋友可以參考下2025-05-05
springboot配置過濾器和多個攔截器、執(zhí)行順序(案例詳解)
這篇文章主要介紹了springboot配置過濾器和多個攔截器、執(zhí)行順序,在文章開頭給大家介紹了過濾器配置的兩種方法,創(chuàng)建兩個攔截器,重寫方法結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-10-10
mybatis plus 開啟sql日志打印的方法小結(jié)
Mybatis-Plus(簡稱MP)是一個 Mybatis 的增強工具,在 Mybatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生。本文重點給大家介紹mybatis plus 開啟sql日志打印的方法小結(jié),感興趣的朋友一起看看吧2021-09-09
Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案
大數(shù)據(jù)量的List集合,需要把List集合中的數(shù)據(jù)批量插入數(shù)據(jù)庫中,本文給大家介紹Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案,感興趣的朋友跟隨小編一起看看吧2024-04-04
SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表
本文主要介紹了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分庫分表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

