最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot整合Druid并開啟監(jiān)控過程

 更新時間:2026年06月04日 09:44:04   作者:二妹的三爺  
Druid高性能數(shù)據(jù)庫連接池與SpringBoot結(jié)合使用,顯著提升數(shù)據(jù)訪問性能,通過內(nèi)置監(jiān)控頁面實(shí)時查看連接狀態(tài)、SQL執(zhí)行情況等關(guān)鍵信息

Druid 是一個由阿里巴巴開源的高性能數(shù)據(jù)庫連接池,它不僅提供了高效的連接管理功能,還自帶了強(qiáng)大的監(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)化、詳細(xì)的監(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)鍵屬性來實(shí)現(xiàn):

  • WebStatFilter:用于收集 Web 應(yīng)用程序的 SQL 慢查詢?nèi)罩尽?/li>
  • StatViewServlet:提供了一個可視化的監(jiān)控頁面,可以查看連接池的各項指標(biāo)。

確保在 application.properties 或 application.yml 中啟用了這兩個組件:

# 啟用 WebStatFilter 和 StatViewServlet
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true

此外,還可以進(jìn)一步自定義監(jiān)控頁面的安全策略,比如允許或限制特定 IP 地址訪問、設(shè)置更多的登錄憑證等。

5. 自定義 Druid 配置(可選)

如果默認(rèn)配置不能滿足你的需求,你可以創(chuàng)建一個自定義的 Druid 配置類來覆蓋默認(rèn)設(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è)置的用戶名和密碼登錄后,你將看到一個包含詳細(xì)連接池信息和 SQL 查詢統(tǒng)計的界面。通過這個頁面,你可以輕松地監(jiān)控數(shù)據(jù)庫連接的狀態(tài)、分析 SQL 性能瓶頸等問題。

7. 注意事項

  • 生產(chǎn)環(huán)境安全:在生產(chǎn)環(huán)境中部署時,請務(wù)必加強(qiáng)對監(jiān)控頁面的訪問控制,避免敏感信息泄露。
  • 性能影響:雖然 Druid 的監(jiān)控功能非常有用,但在高并發(fā)場景下可能會對系統(tǒng)性能產(chǎn)生一定影響。因此,在實(shí)際應(yīng)用中應(yīng)權(quán)衡利弊,合理配置監(jiān)控級別。
  • 更新維護(hù):定期檢查 Druid 版本更新,及時修復(fù)已知漏洞和問題,保持系統(tǒng)的穩(wěn)定性和安全性。

8. 總結(jié)

通過以上步驟,我們成功地在 Spring Boot 應(yīng)用中集成了 Druid 數(shù)據(jù)庫連接池,并開啟了其監(jiān)控功能。這不僅提高了數(shù)據(jù)庫訪問的效率,還為開發(fā)者提供了寶貴的調(diào)試和優(yōu)化工具。

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中LocalDate的詳細(xì)方法舉例總結(jié)

    Java中LocalDate的詳細(xì)方法舉例總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java中LocalDate詳細(xì)方法舉例的相關(guān)資料,LocalDate主要是用來處理日期的類,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • mybatisplus+pgsql查詢bug的解決

    mybatisplus+pgsql查詢bug的解決

    本文主要介紹了mybatisplus+pgsql查詢bug的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java編程實(shí)現(xiàn)獲取mp3時長及播放mp3文件的方法

    Java編程實(shí)現(xiàn)獲取mp3時長及播放mp3文件的方法

    這篇文章主要介紹了Java編程實(shí)現(xiàn)獲取mp3時長及播放mp3文件的方法,涉及java基于jaudiotagger與jl包對MP3音頻文件屬性操作及音頻播放相關(guān)操作技巧,并提供了相關(guān)jar包的本站下載,需要的朋友可以參考下
    2018-02-02
  • 解析Idea為什么不推薦使用@Autowired進(jìn)行Field注入

    解析Idea為什么不推薦使用@Autowired進(jìn)行Field注入

    這篇文章主要介紹了Idea不推薦使用@Autowired進(jìn)行Field注入的原因,網(wǎng)上文章大部分都是介紹兩者的區(qū)別,沒有提到為什么,當(dāng)時想了好久想出了可能的原因,今天來總結(jié)一下
    2022-05-05
  • Spring?注入靜態(tài)對象使用三種方式示例

    Spring?注入靜態(tài)對象使用三種方式示例

    這篇文章主要為大家介紹了Spring注入靜態(tài)對象使用的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java設(shè)計模式中的單例模式解析

    Java設(shè)計模式中的單例模式解析

    這篇文章主要介紹了Java設(shè)計模式中的單例模式解析,單例模式確保一個類只有一個實(shí)例,而且自行實(shí)例化并向整個系統(tǒng)提供這個實(shí)例,需要的朋友可以參考下
    2023-11-11
  • 簡單闡述一下Java集合的概要

    簡單闡述一下Java集合的概要

    今天給大家?guī)淼奈恼率顷P(guān)于Java的相關(guān)知識,文章圍繞著Java集合的概要展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java+Okhttp3調(diào)用接口的實(shí)例

    java+Okhttp3調(diào)用接口的實(shí)例

    這篇文章主要介紹了java+Okhttp3調(diào)用接口的實(shí)例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例

    java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例

    這篇文章主要介紹了java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例的相關(guān)資料,這里提供了實(shí)現(xiàn)代碼可以幫助大家理解TCP及文件讀寫的知識,需要的朋友可以參考下
    2017-07-07
  • Java中超過1000萬數(shù)據(jù)就自動轉(zhuǎn)為科學(xué)計數(shù)法的原因分析與解決方案

    Java中超過1000萬數(shù)據(jù)就自動轉(zhuǎn)為科學(xué)計數(shù)法的原因分析與解決方案

    在 Java 開發(fā)中,你是否遇到過這樣的場景:當(dāng)數(shù)值達(dá)到 1000 萬(10^7)時,原本期望的整數(shù)格式突然變成了1.0E7這樣的科學(xué)計數(shù)法?本文將深入分析背后的原因,并提供 3 種實(shí)用解決方案,幫你徹底解決這個問題,需要的朋友可以參考下
    2026-03-03

最新評論

合川市| 郸城县| 潢川县| 称多县| 盘锦市| 洞口县| 韶山市| 开原市| 忻城县| 渭南市| 蒙山县| 舒兰市| 普陀区| 东城区| 田东县| 江油市| 长沙市| 池州市| 会昌县| 阿克陶县| 察隅县| 修文县| 榆中县| 巩义市| 托克托县| 龙山县| 玛沁县| 含山县| 高台县| 永吉县| 新安县| 师宗县| 云林县| 九台市| 连江县| 崇阳县| 比如县| 专栏| 沁源县| 松江区| 峡江县|