国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Springboot集成Druid實現(xiàn)監(jiān)控功能

這篇具有很好參考價值的文章主要介紹了Springboot集成Druid實現(xiàn)監(jiān)控功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Druid是阿里巴巴開發(fā)的號稱為監(jiān)控而生的數據庫連接池,在功能、性能、擴展性方面,都超過其他數據庫連接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒殺一切。Druid可以很好的監(jiān)控DB池連接和SQL的執(zhí)行情況,天生就是針對監(jiān)控而生的DB連接池。

官方的參考
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

一、傳統(tǒng)web項目(如ssh,ssm)

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.23</version>
</dependency>

使用xml或配置類配置好DruidDataSource

<!--使用druid數據源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init">
        <!--注入連接屬性-->
        <property name="driverClassName" value="xxx"/>
        <property name="url" value="xxx"/>
        <property name="username" value="xxx"/>
        <property name="password" value="xxx"/>
        <!--初始化連接池大小-->
        <property name="initialSize" value="5"></property>
        <!--設置最大連接數-->
        <property name="maxActive" value="20"></property>
        <!--設置等待時間-->
        <property name="maxWait" value="5000"/>
        <!--配置數據源監(jiān)控的filter-->
        <property name="filters" value="stat"></property>
    </bean>

在web應用中的WEB-INF/web.xml中進行相關配置?

	<servlet>
		<servlet-name>StatViewServlet</servlet-name>
		<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
		<!--登陸名-->
		<init-param>
			<param-name>loginUsername</param-name>
			<param-value>admin</param-value>
		</init-param>
		<!-- 登錄密碼-->
		<init-param>
			<param-name>loginPassword</param-name>
			<param-value>2024</param-value>
		</init-param>
		<!--白名單-->
		<init-param>
			<param-name>allow</param-name>
			<param-value></param-value>
		</init-param>
		<!--黑名單-->
		<init-param>
			<param-name>deny</param-name>
			<param-value></param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>StatViewServlet</servlet-name>
		<url-pattern>/druid/*</url-pattern>
	</servlet-mapping>

	<filter>
		<filter-name>WebStatFilter</filter-name>
		<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
		<!--過濾的樣式-->
		<init-param>
			<param-name>exclusions</param-name>
			<param-value>*.js,*.gif,*.css,*.ico,*.jpg,*.png,/druid/*</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>WebStatFilter</filter-name>
<!--		<servlet-name>StatViewServlet</servlet-name>-->
		<url-pattern>/*</url-pattern>
	</filter-mapping>

二、springboot中引入原生的druid,依賴和上面一樣,編寫配置類即可

import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.wall.WallConfig;
import com.alibaba.druid.wall.WallFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Configuration
public class DruidConfig {

    //登陸賬號
    private final String USERNAME = "root";
    //登陸密碼
    private final String PASSWORD = "123";
    @Value("${spring.datasource.url:#{null}}")
    private String dbUrl;
    @Value("${spring.datasource.username: #{null}}")
    private String username;
    @Value("${spring.datasource.password:#{null}}")
    private String password;
    @Value("${spring.datasource.driverClassName:#{null}}")
    private String driverClassName;
    /**
     * 以下屬性可在配置文件自行定義
     */
    private Integer initialSize = 5;
    private Integer minIdle = 10;
    private Integer maxActive = 20;
    private Integer maxWait = 60000;

    @Bean
    @Primary
    public DruidDataSource dataSource() {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setUrl(this.dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);
        if (initialSize != null) {
            datasource.setInitialSize(initialSize);
        }
        if (minIdle != null) {
            datasource.setMinIdle(minIdle);
        }
        if (maxActive != null) {
            datasource.setMaxActive(maxActive);
        }
        if (maxWait != null) {
            datasource.setMaxWait(maxWait);
        }
        List<Filter> filters = new ArrayList<>();
        filters.add(statFilter());
        filters.add(wallFilter());
        datasource.setProxyFilters(filters);
        return datasource;
    }

    @Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new StatViewServlet());
        servletRegistrationBean.addUrlMappings("/druid/*");
        Map<String, String> initParameters = new HashMap<>();
        //禁用HTML頁面上的“Rest All”功能
        initParameters.put("resetEnable", "false");
        //ip白名單(沒配置則允許所有訪問)
        //initParameters.put("allow", "");
        //ip黑名單,如果某個ip同時存在,deny優(yōu)先于allow
        //initParameters.put("deny", "");
        initParameters.put("loginUsername", USERNAME);
        initParameters.put("loginPassword", PASSWORD);
        servletRegistrationBean.setInitParameters(initParameters);
        return servletRegistrationBean;
    }

    /**
     * 配置WebStatFilter
     * @return
     */
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        //設置過濾器
        filterRegistrationBean.setFilter(new WebStatFilter());
        //url過濾規(guī)則
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }

    @Bean
    public StatFilter statFilter() {
        StatFilter statFilter = new StatFilter();
        //慢sql記錄
        statFilter.setLogSlowSql(true);
        statFilter.setMergeSql(true);
        //超過多少時間為慢sql
        statFilter.setSlowSqlMillis(3000);
        return statFilter;
    }

    /**
     * SQL防火墻攔截器(按需使用,達夢數據庫啟動會發(fā)生異常)
     * @return
     */
    @Bean
    public WallFilter wallFilter() {
        WallFilter wallFilter = new WallFilter();
        //允許執(zhí)行多條SQL
        WallConfig config = new WallConfig();
        config.setMultiStatementAllow(true);
        wallFilter.setConfig(config);
        return wallFilter;
    }
}

三、springboot druid starter方式

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.23</version>
</dependency>

按需配置application.yml的內容

spring:
  datasource:
    url: ******
    username: ******
    password: ******
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource  # 指定數據源類型
    ######### 連接池 配置 ##########
    druid:
      # 配置初始化大小、最小、最大
      initial-size: 5
      minIdle: 10
      max-active: 20
      # 配置獲取連接等待超時的時間(單位:毫秒)
      max-wait: 60000
      # 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒
#      time-between-eviction-runs-millis: 2000
      # 配置一個連接在池中最小生存的時間,單位是毫秒
#      min-evictable-idle-time-millis: 600000
#      max-evictable-idle-time-millis: 900000
      # 用來測試連接是否可用的SQL語句,默認值每種數據庫都不相同,這是mysql
#      validationQuery: select 1
      # 應用向連接池申請連接,并且testOnBorrow為false時,連接池將會判斷連接是否處于空閑狀態(tài),如果是,則驗證這條連接是否可用
#      testWhileIdle: true
      # 如果為true,默認是false,應用向連接池申請連接時,連接池會判斷這條連接是否是可用的
#      testOnBorrow: false
      # 如果為true(默認false),當應用使用完連接,連接池回收連接的時候會判斷該連接是否還可用
#      testOnReturn: false
      # 是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大,比如說oracle
#      poolPreparedStatements: true
      # 要啟用PSCache,必須配置大于0,當大于0時, poolPreparedStatements自動觸發(fā)修改為true,
      # 在Druid中,不會存在Oracle下PSCache占用內存過多的問題,
      # 可以把這個數值配置大一些,比如說100
#      maxOpenPreparedStatements: 20
      # 連接池中的minIdle數量以內的連接,空閑時間超過minEvictableIdleTimeMillis,則會執(zhí)行keepAlive操作
#      keepAlive: true
      # Spring 監(jiān)控,利用aop 對指定接口的執(zhí)行時間,jdbc數進行記錄
      aop-patterns: "com.springboot.template.dao.*"
      ########### 啟用內置過濾器(第一個 stat必須,否則監(jiān)控不到SQL)##########
      filters: stat,wall,log4j2
      # 自己配置監(jiān)控統(tǒng)計攔截的filter
      filter:
        # 開啟druiddatasource的狀態(tài)監(jiān)控
        stat:
          enabled: true
          db-type: mysql
          # 開啟慢sql監(jiān)控,超過2s 就認為是慢sql,記錄到日志中
          log-slow-sql: true
          slow-sql-millis: 2000
        # 日志監(jiān)控,使用slf4j 進行日志輸出
#        slf4j:
#          enabled: true
#          statement-log-error-enabled: true
#          statement-create-after-log-enabled: false
#          statement-close-after-log-enabled: false
#          result-set-open-after-log-enabled: false
#          result-set-close-after-log-enabled: false
      ########## 配置WebStatFilter,用于采集web關聯(lián)監(jiān)控的數據 ##########
      web-stat-filter:
        # 啟動 StatFilter
        enabled: true
        # 過濾所有url
        url-pattern: /*
        # 排除一些不必要的url
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        # 開啟session統(tǒng)計功能
        session-stat-enable: true
        # session的最大個數,默認100
        session-stat-max-count: 1000
      ########## 配置StatViewServlet(監(jiān)控頁面),用于展示Druid的統(tǒng)計信息 ##########
      stat-view-servlet:
        # 啟用StatViewServlet
        enabled: true
        # 訪問內置監(jiān)控頁面的路徑,內置監(jiān)控頁面的首頁是/druid/index.html
        url-pattern: /druid/*
        # 不允許清空統(tǒng)計數據,重新計算
        reset-enable: false
        # 配置監(jiān)控頁面訪問密碼
        login-username: root
        login-password: 123
        # 允許訪問的地址,如果allow沒有配置或者為空,則允許所有訪問
#        allow:
        # 拒絕訪問的地址,deny優(yōu)先于allow,如果在deny列表中,就算在allow列表中,也會被拒絕
#        deny:

訪問監(jiān)控頁面

springboot druid監(jiān)控,SpringBoot,java,spring boot,數據庫

頁面簡單介紹?

1、數據源頁面:是當前DataSource配置的基本信息,上述配置的Filter可以在里面找到,如果沒有配置Filter(一些信息會無法統(tǒng)計,例如“SQL監(jiān)控”,會無法獲取JDBC相關的SQL執(zhí)行信息)。
2、SQL監(jiān)控頁面:統(tǒng)計了所有SQL語句的執(zhí)行情況。
3、URL監(jiān)控頁面:統(tǒng)計了所有Controller接口的訪問以及執(zhí)行情況。
4、Spring 監(jiān)控頁面,利用aop 對指定接口的執(zhí)行時間,jdbc數進行記錄。
5、SQL防火墻頁面:druid提供了黑白名單的訪問,可以清楚的看到sql防護情況。
6、Session監(jiān)控頁面:可以看到當前的session狀況,創(chuàng)建時間、最后活躍時間、請求次數、請求時間等詳細參數。
7、JSONAPI 頁面:通過api的形式訪問Druid的監(jiān)控接口,api接口返回Json形式數據。?文章來源地址http://www.zghlxwxcb.cn/news/detail-848854.html

到了這里,關于Springboot集成Druid實現(xiàn)監(jiān)控功能的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數據源

    SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數據源

    ??本文主要講解 springboot +mybatisplus + druid 實現(xiàn)多數據源配置功能 ?? 主頁傳送門:?? 傳送 Spring Boot: ? ?Spring Boot是一個基于Spring框架的開源Java開發(fā)框架,旨在簡化Spring應用程序的開發(fā)、配置和部署。它提供了一種快速、敏捷的方式來構建獨立的、生產級別的Spring應用程

    2024年02月09日
    瀏覽(25)
  • Spring Boot3整合Druid(監(jiān)控功能)

    Spring Boot3整合Druid(監(jiān)控功能)

    目錄 1.前置條件 2.導依賴 錯誤依賴: 正確依賴: 3.配置 已經初始化好一個spring boot項目且版本為3X,項目可正常啟動。 作者版本為3.2.2 初始化教程: 新版idea創(chuàng)建spring boot項目-CSDN博客 https://blog.csdn.net/qq_62262918/article/details/135785412?spm=1001.2014.3001.5501 這個依賴對于spring boot 3的支

    2024年01月22日
    瀏覽(18)
  • 【漏洞】【Druid】Druid未授權訪問漏洞,修復方案。springboot

    漏洞描述: Druid是阿里巴巴數據庫出品的,為監(jiān)控而生的數據庫連接池,并且Druid提供的監(jiān)控功能,監(jiān)控SQL的執(zhí)行時間、監(jiān)控Web URI的請求、Session監(jiān)控,首先Druid是不存在什么漏洞的。但當開發(fā)者配置不當時就可能造成未授權訪問。 解決建議: 修改中間件配置 給出的例子,

    2024年02月11日
    瀏覽(30)
  • 【SpringBoot】SpringBoot整合Mybatis、druid

    【SpringBoot】SpringBoot整合Mybatis、druid

    ??博客x主頁:己不由心王道長??! ??文章說明:SpringBoot?? ?系列專欄:spring ??本篇內容:基于SpringBoot整合Mybatis、druid?? ??每日一語:有時候,沒有下一次,沒有機會重來,沒有暫停繼續(xù)。有時候,錯過了現(xiàn)在,就永遠永遠的沒機會了。?? ??作者詳情:作者是一名

    2024年02月10日
    瀏覽(26)
  • SpringBoot-Druid

    目錄 1.什么是Druid 2.主要優(yōu)點和原因 3.誤區(qū) 4.Part代碼 0.pom 1.Spring.datasource.type: com.alibaba.druid.pool.DruidDataSource 2.Druid用Jasypt加密任意內容 @EnableEncryptableProperties開啟加密注解 3.Druid監(jiān)控平臺 Druid 是一個開源的數據庫連接池和監(jiān)控庫,主要用于連接和管理數據庫連接。它的設計目標

    2024年02月07日
    瀏覽(27)
  • SpringBoot整合Druid

    SpringBoot整合Druid

    在Spring Boot中整合Druid時,需要導入Druid和JDBC的相關依賴 如果你想了解如何整合JDBC,可參考: SpringBoot整合JDBC 可參考--------??SpringBoot整合JDBC_Maiko Star的博客-CSDN博客 Durid官網----?GitHub - alibaba/druid: 阿里云計算平臺DataWorks(https://help.aliyun.com/document_detail/137663.html) 團隊出品,為監(jiān)

    2024年02月15日
    瀏覽(26)
  • Springboot+druid

    Springboot+druid

    1.Druid是Java語言中最好的數據庫連接池。Druid能夠提供強大的監(jiān)控和擴展功能。 2.配置maven 3.druid配置 4.打開Druid的監(jiān)控統(tǒng)計功能 Druid的監(jiān)控統(tǒng)計功能是通過filter-chain擴展實現(xiàn),如果你要打開監(jiān)控統(tǒng)計功能,配置StatFilter http://localhost:8007/druid/login.html ? 5.配置過濾器 6.jdbc操作 7.

    2024年02月09日
    瀏覽(16)
  • springboot引入druid解析sql

    springboot引入druid解析sql

    一、前言 在開發(fā)中,有時我們可能會需要獲取SQL中的表名,那么因為不同的數據源類型SQL會存在部分差異,那么我們就可以使用alibaba 的druid包實現(xiàn)不同的數據源類型的sql解析。 二、引入相關maven依賴 三、通過工具類SqlUtils實現(xiàn)對SQL的解析。 三、測試結果 運行結果如下: 大

    2024年02月12日
    瀏覽(33)
  • Springboot+Druid配置多數據源

    Spring的多數據源支持—AbstractRoutingDataSource,AbstractRoutingDataSource定義了抽象的determineCurrentLookupKey方法,子類實現(xiàn)此方法,來確定要使用的數據源 Druid 實現(xiàn)多數據源支持,核心是Overwrite AbstractRoutingDataSource 的 determineCurrentLookupKey 方法 以springboot框架為基礎使用aop注解的方式依賴

    2024年02月11日
    瀏覽(25)
  • SpringBoot整合Druid配置多數據源

    SpringBoot整合Druid配置多數據源

    目錄 1.初始化項目 1.1.初始化工程 1.2.添加依賴 1.3.配置yml文件 1.4.Spring Boot 啟動類中添加?@MapperScan?注解,掃描 Mapper 文件夾 1.5.配置使用數據源 1.5.1.注解方式 1.5.2.基于AOP手動實現(xiàn)多數據源原生的方式 2.結果展示 Mybatis-Plus:簡介 | MyBatis-Plus (baomidou.com) 在正式開始之前,先初始

    2024年02月01日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包