亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Springboot整合Druid實現(xiàn)對訪問的監(jiān)控方式

 更新時間:2024年05月28日 09:35:09   作者:一個諾諾前行的后端程序員  
這篇文章主要介紹了Springboot整合Druid實現(xiàn)對訪問的監(jiān)控方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Springboot整合Druid實現(xiàn)對訪問的監(jiān)控

使用SpringBoot簡單了解Druid的監(jiān)控系統(tǒng) ,我們使用Druid可能平常最多的就是連接池,但是Druid還可以實現(xiàn)監(jiān)控系統(tǒng),環(huán)境這里采用的是Springboot+mybatisPlus+Druid

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--MySQL依賴-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--lombok依賴-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--springboot test依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--mybatis-plus依賴-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-`在這里插入代碼片`starter</artifactId>
            <version>1.1.10</version>
        </dependency>
# 配置Druid的配置類
@Configuration
public class DruidMonitroConfiguration {
        // 1. 對于當(dāng)前這個配置僅僅是讓一個Druid監(jiān)控界面可以啟動起來  但是具體里面的監(jiān)控項目還不能夠直接給我們提供支持,如果你要想使用以上這些所有的監(jiān)控項來監(jiān)控當(dāng)前的系統(tǒng)狀態(tài)暫時都無法使用,因為這些組件都是需額外的配置
    
    @Bean("druidStatViewServlet")
    public ServletRegistrationBean<StatViewServlet> getDruidStatViewServlet() {
        # druid的訪問路徑
        ServletRegistrationBean<StatViewServlet> registrationBean
                = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");

        registrationBean.addInitParameter(StatViewServlet.PARAM_NAME_ALLOW, "127.0.0.1");//白名單
# 黑名單沒有        registrationBean.addInitParameter(StatViewServlet.PARAM_NAME_DENY, "");//黑名單
        registrationBean.addInitParameter(StatViewServlet.PARAM_NAME_USERNAME, "admin");//用戶名
        registrationBean.addInitParameter(StatViewServlet.PARAM_NAME_PASSWORD, "admin");//密碼
        registrationBean.addInitParameter(StatViewServlet.PARAM_NAME_RESET_ENABLE, "true");//允許重置
        return registrationBean;
  }
######################2. 添加Druid對web的訪問控制
    @Bean("webStatFilter")
    public WebStatFilter getWebStatFilter() {
        WebStatFilter statFilter = new WebStatFilter();
        statFilter.setSessionStatEnable(true);// 對session進(jìn)行監(jiān)控
        return statFilter;
    }

    // 配置好了一個web監(jiān)控的處理
    @Bean
    @DependsOn("webStatFilter")
    public FilterRegistrationBean<WebStatFilter> getDruidStatViewServlet(WebStatFilter webStatFilter) {
        FilterRegistrationBean<WebStatFilter> registrationBean
                = new FilterRegistrationBean<>(webStatFilter);
        registrationBean.addUrlPatterns("/*"); //對所有的路徑都進(jìn)行監(jiān)控配置
        registrationBean.addInitParameter
                (WebStatFilter.PARAM_NAME_EXCLUSIONS, "*.js,*.gif,/druid/*");// 排除路徑
        return registrationBean;


    }

}
yaml
spring:

    datasource:
      # 1. DRUID 數(shù)據(jù)源的類型
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/lvhao?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
      username: root
      password: root
      druid: # 定義數(shù)據(jù)庫連接處所需要的相關(guān)配置項
        initial-Size: 5  # 初始化連接池大小
        min-idle: 10  # 最小維持連接池大小
        max-active: 40 #最大可提供鏈接數(shù)量  你有多少人可以鏈接 呢么如果現(xiàn)在鏈接都滿的話 就等待
        max-wait: 5000 #等待時間  如果連接池滿的話 最長的等待時間
        time-between-eviction-runs-millis: 4000 # 關(guān)閉空閑鏈接間隔 長期不使用的鏈接(我需要釋放)
        min-evictable-idle-time-millis: 3000 #l鏈接的最小生存時間
        validation-query: SELECT 1 FROM DUAL #數(shù)據(jù)庫的狀態(tài)的鏈接檢查
        test-while-idle: true # 判斷是否為可用鏈接 拿到一個可用鏈接之后 在進(jìn)行一個后續(xù)可用處理
        test-on-borrow: false #  在鏈接前是否需要測試
        test-on-return: false #歸還鏈接前是否要測試

配置好Druid對web的支持 ,再寫一個test類,這樣我們就可以 訪問一個controller

當(dāng)我們訪問 http://localhost:8080/druid/index.html 的時候

就可以看到druid的面板了,這里可以看到druid 可以監(jiān)控web,sql, 以及sql 防火墻 ,session 之類的

再之后我們訪問http://localhost:8080/message/1?a (看我controller的url) 

對web的監(jiān)控

對url的監(jiān)控

對session的監(jiān)控

你看這里的web應(yīng)用顯示的是請求次數(shù)7次,

因為我url 訪問了7次,并且記錄了我的session以及訪問的url 信息

之后我們接著來看對慢sql的排查,一般情況下sql查詢超過2s就定義為慢sql, 通過Druid我們就可以知道那個sql執(zhí)行慢

但是我這里用1 是為了好演示效果

我現(xiàn)在新建立一個類 因為項目使用的是mybatisPlus

并且訪問localhost:8080/echo

當(dāng)我不斷的訪問 這個url時

可以看到 第一我后臺打印這個慢sql 日志了 當(dāng)然在Druid面板上也可以看到

我們點進(jìn)去也可以看到具體的詳情以及明細(xì)

這里的數(shù)據(jù)源顯示就顯示出你現(xiàn)在數(shù)據(jù)庫的配置信息

再之后我們可以進(jìn)行一個sql 防火墻的配置,SQL防火墻是數(shù)據(jù)庫層面的防火墻功能,可以防止惡意SQL注入。

比如說 update 后面沒有where語句 這樣進(jìn)行update的時候就是全表update了

spring:

    datasource:
      # 1. DRUID 數(shù)據(jù)源的類型
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/lvhao?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
      username: root
      password: abce1qaz
      druid: # 定義數(shù)據(jù)庫連接處所需要的相關(guān)配置項
        initial-Size: 5  # 初始化連接池大小
        min-idle: 10  # 最小維持連接池大小
        max-active: 40 #最大可提供鏈接數(shù)量  你有多少人可以鏈接 呢么如果現(xiàn)在鏈接都滿的話 就等待
        max-wait: 5000 #等待時間  如果連接池滿的話 最長的等待時間
        time-between-eviction-runs-millis: 4000 # 關(guān)閉空閑鏈接間隔 長期不使用的鏈接(我需要釋放)
        min-evictable-idle-time-millis: 3000 #l鏈接的最小生存時間
        validation-query: SELECT 1 FROM DUAL #數(shù)據(jù)庫的狀態(tài)的鏈接檢查
        test-while-idle: true # 判斷是否為可用鏈接 拿到一個可用鏈接之后 在進(jìn)行一個后續(xù)可用處理
        test-on-borrow: false #  在鏈接前是否需要測試
        test-on-return: false #歸還鏈接前是否要測試
        #--------------man sql
        filter:
          stat:
            merge-sql: true # 統(tǒng)計相同的sql
            log-slow-sql: true # 記錄慢sql
#            slow-sql-millis: 2000 # 慢slq執(zhí)行時間標(biāo)準(zhǔn)
            slow-sql-millis: 1 # 慢slq執(zhí)行時間標(biāo)準(zhǔn)
		防火墻的配置
          wall:
            enabled: true #k開啟sql防火墻
            config:
              multi-statement-allow: true #允許執(zhí)行批處理
              delete-allow: false # 不允許執(zhí)行刪除



比如說

@RestController
@RequestMapping("/echo/test")
public class TestController3 {
    @Autowired
    private UserDAO userDAO;

    @GetMapping("/insert")
    public Object echo() {
        for (int i = 0; i < 5; i++) {
            User user = new User();

            user.setId("11"+i);
            user.setName("zhangsan"+i );
            user.setAge(11);
            user.setBir(new Date());
            userDAO.insert(user);
        }
        return "1";
    }
    @GetMapping("/delete")
    public Object delete() {
        QueryWrapper<User> objectQueryWrapper = new QueryWrapper<>();
        objectQueryWrapper.eq("id",110);
        userDAO.delete(objectQueryWrapper);
        return "1";
    }

}

當(dāng)我訪問 /echo/test/insert 的時候是允許批量訪問的

當(dāng)我當(dāng)問 /echo/test/delete 的時候會報錯的 因為 我此時的防火墻設(shè)置的不允許執(zhí)行刪除

這樣我們就可以對我們的sql 以及慢sql進(jìn)行一個查詢以及記錄

總結(jié)

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

相關(guān)文章

  • Java Socket上的Read操作阻塞問題詳解

    Java Socket上的Read操作阻塞問題詳解

    這篇文章主要介紹了Java Socket上的Read操作阻塞問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 10中java常見字符串操作實例

    10中java常見字符串操作實例

    給大家分享10中java常見字符串操作方法以及相關(guān)實例代碼,對此有需要的讀者們可以學(xué)習(xí)參考下。
    2019-07-07
  • spring中通過ApplicationContext getBean獲取注入對象的方法實例

    spring中通過ApplicationContext getBean獲取注入對象的方法實例

    今天小編就為大家分享一篇關(guān)于spring中通過ApplicationContext getBean獲取注入對象的方法實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • InteliJ IDEA 設(shè)置eclipse快捷鍵 的圖文教程

    InteliJ IDEA 設(shè)置eclipse快捷鍵 的圖文教程

    本文通過圖文并茂的形式給大家介紹了InteliJ IDEA 設(shè)置eclipse快捷鍵 ,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下
    2018-06-06
  • Spring線程池ThreadPoolTaskExecutor的用法及說明

    Spring線程池ThreadPoolTaskExecutor的用法及說明

    這篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Springboot整合Netty自定義協(xié)議實現(xiàn)示例詳解

    Springboot整合Netty自定義協(xié)議實現(xiàn)示例詳解

    這篇文章主要為大家介紹了Springboot整合Netty自定義協(xié)議實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Log4j關(guān)閉Spring和Hibernate日志打印方式

    Log4j關(guān)閉Spring和Hibernate日志打印方式

    這篇文章主要介紹了Log4j關(guān)閉Spring和Hibernate日志打印方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 在Spring使用iBatis及配置講解

    在Spring使用iBatis及配置講解

    今天小編就為大家分享一篇關(guān)于在Spring使用iBatis及配置講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java解析XML的四種方式

    Java解析XML的四種方式

    本文詳細(xì)講解了Java解析XML的四種方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Spring MVC 使用支付寶接口完成在線支付的示例代碼

    Spring MVC 使用支付寶接口完成在線支付的示例代碼

    本篇文章主要介紹了Spring MVC 使用支付寶接口完成在線支付的示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-08-08

最新評論