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

SpringBoot整合Druid實(shí)現(xiàn)SQL監(jiān)控和數(shù)據(jù)庫密碼加密

 更新時(shí)間:2024年06月26日 08:56:48   作者:詩筠  
Druid連接池是阿里巴巴開源的數(shù)據(jù)庫連接池項(xiàng)目,Druid連接池為監(jiān)控而生,內(nèi)置強(qiáng)大的監(jiān)控功能,監(jiān)控特性不影響性能,本文給大家介紹了SpringBoot整合Druid實(shí)現(xiàn)SQL監(jiān)控和數(shù)據(jù)庫密碼加密,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下

1 引言

1.1 簡介

Druid連接池是阿里巴巴開源的數(shù)據(jù)庫連接池項(xiàng)目。Druid連接池為監(jiān)控而生,內(nèi)置強(qiáng)大的監(jiān)控功能,監(jiān)控特性不影響性能。功能強(qiáng)大,能防SQL注入,內(nèi)置Loging能診斷Hack應(yīng)用行為。除了提供基本的數(shù)據(jù)源功能外,還具備以下優(yōu)勢(shì):

  • 性能優(yōu)越:Druid連接池的性能表現(xiàn)優(yōu)于其他常見連接池,如C3P0和DBCP。
  • 監(jiān)控功能強(qiáng)大:Druid內(nèi)置了豐富的監(jiān)控功能,可以實(shí)時(shí)查看SQL執(zhí)行情況、連接池狀態(tài)等。
  • 穩(wěn)定性高:Druid在高并發(fā)環(huán)境下表現(xiàn)穩(wěn)定,能夠有效避免連接泄漏等問題。
  • 擴(kuò)展性好:Druid支持多種數(shù)據(jù)庫,且配置靈活,易于集成和擴(kuò)展。

1.2 Druid的功能

高效的數(shù)據(jù)庫連接池管理

  • 高性能:在并發(fā)環(huán)境下表現(xiàn)優(yōu)越,處理大量數(shù)據(jù)庫連接請(qǐng)求。
  • 穩(wěn)定性:在高并發(fā)和高負(fù)載情況下保持穩(wěn)定,避免連接泄漏。
  • 易用性:配置簡單,快速集成到Java應(yīng)用中。

豐富的監(jiān)控功能

  • 連接池監(jiān)控:實(shí)時(shí)監(jiān)控連接池狀態(tài),如連接數(shù)、空閑連接數(shù)等。
  • SQL監(jiān)控:記錄SQL執(zhí)行情況,統(tǒng)計(jì)執(zhí)行時(shí)間、次數(shù)等。
  • URI監(jiān)控:監(jiān)控各URI的訪問情況,統(tǒng)計(jì)請(qǐng)求次數(shù)和響應(yīng)時(shí)間。
  • 防火墻功能:防止SQL注入攻擊,提升系統(tǒng)安全性。

便捷的配置和擴(kuò)展

  • 多數(shù)據(jù)庫支持:支持MySQL、Oracle、PostgreSQL等多種數(shù)據(jù)庫。
  • 靈活配置:提供豐富的配置選項(xiàng),靈活調(diào)整。
  • 插件機(jī)制:支持插件擴(kuò)展功能,如stat、wall、log4j等。

SQL執(zhí)行日志和統(tǒng)計(jì)分析

  • SQL執(zhí)行日志:記錄SQL執(zhí)行時(shí)間、次數(shù)、影響行數(shù)等。
  • 統(tǒng)計(jì)分析:提供SQL執(zhí)行統(tǒng)計(jì)分析,幫助優(yōu)化SQL性能。
  • 慢SQL檢測(cè):自動(dòng)檢測(cè)慢SQL,提供詳細(xì)執(zhí)行信息,便于調(diào)優(yōu)。

提高系統(tǒng)安全性

  • SQL防火墻:配置防火墻規(guī)則,攔截非法SQL請(qǐng)求,防止SQL注入。
  • 黑白名單機(jī)制:配置IP黑白名單,限制特定IP訪問權(quán)限。

1.3 競(jìng)品對(duì)比

功能類別功能DruidHikariCPDBCPTomcat-jdbcC3P0
性能PSCache
LRU
SLB負(fù)載均衡支持
穩(wěn)定性ExceptionSorter
擴(kuò)展擴(kuò)展FilterJdbcIntercepter
監(jiān)控監(jiān)控方式jmx/log/httpjmx/metricsjmxjmxjmx
支持SQL級(jí)監(jiān)控
Spring/Web關(guān)聯(lián)監(jiān)控
診斷支持LogFilter
連接泄露診斷logAbandoned
安全SQL防注入
支持配置加密

2 準(zhǔn)備工作

2.1 項(xiàng)目環(huán)境

  • JDK版本:JDK 17
  • Spring Boot版本:Spring Boot 3.2.2
  • MySQL版本:8.0.37
  • 構(gòu)建工具:Maven

3 集成Druid

3.1 添加依賴

這里的Druid版本必須要選擇1.2.20及以上版本,否則無法運(yùn)行。

還有一點(diǎn),Druid的版本要與mysql-connector-java的版本相匹配,可以去下面的網(wǎng)站看:

Maven Repository: com.alibaba » druid » 1.2.20 (mvnrepository.com)

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-3-starter</artifactId>
            <version>1.2.20</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>

3.2 配置Druid

相關(guān)配置的詳細(xì)信息可見:DruidDataSource配置屬性列表 · alibaba/druid Wiki (github.com)

spring:
  application:
    name: server
  profiles:
    active: dev # 激活dev配置文件
  datasource:
    url: jdbc:mysql://${voyager.db.host}:3306/study_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: ${voyager.db.pw}
    # druid 相關(guān)參數(shù)配置
    druid:
      # 初始化連接大小
      initial-size: 5
      # 最小連接池?cái)?shù)量
      min-idle: 5
      # 最大連接池?cái)?shù)量
      max-active: 20
      # 獲取連接時(shí)最大等待時(shí)間,單位毫秒
      max-wait: 60000
      # 配置間隔多久才進(jìn)行一次檢測(cè),檢測(cè)需要關(guān)閉的空閑連接,單位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一個(gè)連接在池中最小生存的時(shí)間,單位是毫秒
      min-evictable-idle-time-millis: 300000
      # 測(cè)試連接
      validation-query: SELECT 1 FROM DUAL
      # 配置監(jiān)控統(tǒng)計(jì)用的filters,過濾掉靜態(tài)文件
      web-stat-filter:
        # 啟用Web統(tǒng)計(jì)過濾器
        enabled: true
        # 過濾匹配規(guī)則
        url-pattern: /*
        # 過濾忽略的格式
        exclusions: /druid/*,*.js,*.css,*.gif,*.jpg,*.bmp,*.png,*.ico
      # 配置可視化控制臺(tái)頁面
      stat-view-servlet:
        enabled: true
        # 訪問Druid監(jiān)控頁面的地址,首頁默認(rèn)是 /druid/index.html
        url-pattern: /druid/*
        # 禁用重置按鈕
        reset-enable: true
        # 登錄用戶名
        login-username: root
        # 登錄密碼
        login-password: 123456
      # 通過別名的方式配置擴(kuò)展插件  常用的插件有:監(jiān)控統(tǒng)計(jì)用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall 防御sql注入的filter:wall
      filter:
        stat:
          enabled: true
          # 是否開啟慢sql
          log-slow-sql: true
          # 是否開啟SQL合并
          merge-sql: true
          # 慢sql的時(shí)間標(biāo)準(zhǔn) 單位:毫秒
          slow-sql-millis: 1000

3.3 編寫測(cè)試類測(cè)試

注意:不要使用lombok的@RequiredArgsConstructor注解,JUnit5好像無法自動(dòng)裝配。

@SpringBootTest
class SmartApplicationTest {
    
    @Autowired
    private DataSource dataSource ;

    @Test
    void contextLoads() {
        System.out.println(dataSource.getClass());
        DruidDataSource druidDataSource = (DruidDataSource) dataSource;
        System.out.println("druidDataSource.getUrl() = " + druidDataSource.getUrl());
        System.out.println("druidDataSource.getUsername() = " + druidDataSource.getUsername());
        System.out.println("druidDataSource.getInitialSize() = " + druidDataSource.getInitialSize());
        System.out.println("druidDataSource.getMaxActive() = " + druidDataSource.getMaxActive());
    }
  
}

運(yùn)行測(cè)試:

image-20240624182524748

可以看到配置類的相關(guān)配置已經(jīng)生效。

3.4 訪問控制臺(tái)

啟動(dòng)自己項(xiàng)目中的SpringBootApplication類后訪問http://localhost:8084/druid/login.html(改為自己服務(wù)的端口),輸入賬號(hào)密碼后即可進(jìn)入:

image-20240624183006312

3.5 測(cè)試SQL監(jiān)控

測(cè)試接口

@RequestMapping("/user")
@RestController
@RequiredArgsConstructor
public class UserInfoController {

    private final UserInfoService userInfoService;

    @GetMapping("/test")
    public Result<UserInfo> login() {
        return Result.success(userInfoService.getById(1));
    }
    
}

進(jìn)行測(cè)試

image-20240624183953241

3.6 數(shù)據(jù)庫密碼加密

3.6.1 執(zhí)行命令加密數(shù)據(jù)庫密碼

官方教程Wiki文檔:使用ConfigFilter · alibaba/druid Wiki (github.com)

在命令行中執(zhí)行如下命令:

java -cp D:\Develop\Maven\mvnRespo\com\alibaba\druid\1.2.20\druid-1.2.20.jar com.alibaba.druid.filter.config.ConfigTools your_password

輸出

privateKey:MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEA6+4avFnQKP+O7bu5YnxWoOZjv3no4aFV558HTPDoXs6EGD0HP7RzzhGPOKmpLQ1BbA5viSht+aDdaxXp6SvtMQIDAQABAkAeQt4fBo4SlCTrDUcMANLDtIlax/I87oqsONOg5M2JS0jNSbZuAXDv7/YEGEtMKuIESBZh7pvVG8FV531/fyOZAiEA+POkE+QwVbUfGyeugR6IGvnt4yeOwkC3bUoATScsN98CIQDynBXC8YngDNwZ62QPX+ONpqCel6g8NO9VKC+ETaS87wIhAKRouxZL38PqfqV/WlZ5ZGd0YS9gA360IK8zbOmHEkO/AiEAsES3iuvzQNYXFL3x9Tm2GzT1fkSx9wx+12BbJcVD7AECIQCD3Tv9S+AgRhQoNcuaSDNluVrL/B/wOmJRLqaOVJLQGg==
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOvuGrxZ0Cj/ju27uWJ8VqDmY7956OGhVeefB0zw6F7OhBg9Bz+0c84RjzipqS0NQWwOb4kobfmg3WsV6ekr7TECAwEAAQ==
password:PNak4Yui0+2Ft6JSoKBsgNPl+A033rdLhFw+L0np1o+HDRrCo9VkCuiiXviEMYwUgpHZUFxb2FpE0YmSguuRww==

3.6.2 配置參數(shù)

spring:
  datasource:
    url: jdbc:mysql://${voyager.db.host}:3306/study_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: password  # 修改為控制臺(tái)輸出的password
    #druid數(shù)據(jù)源配置
    druid:
      # Druid數(shù)據(jù)源的公鑰
      public-key: publicKey # 修改為控制臺(tái)輸出的publicKey
      filter:
        # 啟用Druid的過濾器配置
        config: 
          enabled: true
      connect-properties:
        # 啟用Druid的連接屬性解密功能
        config.decrypt: true
        config.decrypt.key: publicKey # 控制臺(tái)輸出的publicKey

3.6.3 測(cè)試

啟動(dòng)啟動(dòng)類,請(qǐng)求測(cè)試接口:

image-20240624211333064

4 總結(jié)

在這篇文章中,我們?cè)敿?xì)介紹了如何在Spring Boot項(xiàng)目中集成Druid數(shù)據(jù)源,并實(shí)現(xiàn)SQL監(jiān)控和數(shù)據(jù)庫密碼加密等功能,Druid還有許多有用的功能,這里就不過多展示了,希望本文對(duì)大家有所幫助。

以上就是SpringBoot整合Druid實(shí)現(xiàn)SQL監(jiān)控和數(shù)據(jù)庫密碼加密的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot SQL監(jiān)控和密碼加密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實(shí)現(xiàn)app簽到功能

    java實(shí)現(xiàn)app簽到功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)app簽到功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn)

    springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn)

    之前項(xiàng)目工程用的是mybatis,現(xiàn)在需要將其替換為mybatis-plus,本文主要介紹了springboot將mybatis升級(jí)為mybatis-plus的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • SpringBoot集成阿里巴巴Druid監(jiān)控的示例代碼

    SpringBoot集成阿里巴巴Druid監(jiān)控的示例代碼

    這篇文章主要介紹了SpringBoot集成阿里巴巴Druid監(jiān)控的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析

    Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • SpringMVC框架實(shí)現(xiàn)Handler處理器的三種寫法

    SpringMVC框架實(shí)現(xiàn)Handler處理器的三種寫法

    這篇文章主要介紹了SpringMVC框架實(shí)現(xiàn)Handler處理器的三種寫法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例

    Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例

    這篇文章主要介紹了Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • java安全fastjson1.2.24反序列化TemplatesImpl分析

    java安全fastjson1.2.24反序列化TemplatesImpl分析

    這篇文章主要介紹了java安全fastjson1.2.24反序列化TemplatesImpl分析,fastjson是alibaba開源的一個(gè)用于處理json數(shù)據(jù)格式的解析庫,它支持將java對(duì)象解析成json字符串格式的數(shù)據(jù),也可以將json字符串還原成java對(duì)象
    2022-07-07
  • jmeter添加自定函數(shù)的實(shí)例(jmeter5.3+IntelliJ IDEA)

    jmeter添加自定函數(shù)的實(shí)例(jmeter5.3+IntelliJ IDEA)

    這篇文章主要介紹了jmeter添加自定函數(shù)的實(shí)例(jmeter5.3+IntelliJ IDEA),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java8中Lambda表達(dá)式使用和Stream API詳解

    Java8中Lambda表達(dá)式使用和Stream API詳解

    這篇文章主要給大家介紹了關(guān)于Java8中Lambda表達(dá)式使用和Stream API的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Java實(shí)現(xiàn)淘寶秒殺聚劃算搶購自動(dòng)提醒源碼

    Java實(shí)現(xiàn)淘寶秒殺聚劃算搶購自動(dòng)提醒源碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)淘寶秒殺聚劃算搶購自動(dòng)提醒源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論