溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在spring boot中利用DRUID實現(xiàn)數(shù)據(jù)源監(jiān)控

發(fā)布時間:2021-04-17 16:14:32 來源:億速云 閱讀:186 作者:Leah 欄目:編程語言

怎么在spring boot中利用DRUID實現(xiàn)數(shù)據(jù)源監(jiān)控?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

項目依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>io.githu.syske</groupId>
  <artifactId>druid-datasouce-decrypt</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>druid-datasouce-decrypt</name>
  <description>Demo project for Spring Boot</description>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.1</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>

    <!-- 阿里巴巴druid -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.10</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

如果你的數(shù)據(jù)庫是Oracle,那么你要把mysql的數(shù)據(jù)庫驅(qū)動替換成Oracle驅(qū)動

修改spring boot項目配置信息

server:
 port: 8083

我采用的是yaml的方式,然后啟動你的項目,因為沒有controller和其他的代碼,所以沒什么效果,但是項目可以正常啟動。

加密數(shù)據(jù)源密碼,創(chuàng)建publickey

這里沒什么好講的,我直接放代碼:

import org.junit.Test;

/**
 * @program: druid-datasouce-decrypt
 * @description:
 * @author: liu yan
 * @create: 2019-12-02 18:34
 */
public class DBencrydtTest {
  @Test
  public void test() {
    String[] args = {"root"};
    try {
      com.alibaba.druid.filter.config.ConfigTools.main(args);
    } catch (Exception e) {

    }

    System.out.println();
  }
}

需要說明的是,args數(shù)組中放置的是密碼,直接運行上面的代碼,你會看到控制臺會打印如下信息:

privateKey:MIIBVAIBADANBgkqhkiFWERAERFrterfgdggE6AgEAAkEAqboz+iNXPv1jgKAhDW7W+L/NwqG6GDTo49BjmlMg3WxBg4w9h5RC3oRO40EOjL7+DtEBBlCZ6OHZfZWKh27FmwIDAQABAkA/azwQszPebX/IiAzRoCDjQYf4ucV3Vg3PUgZlm7okAbsXrxz2xrdnM8Er08YKm3vUOmWQmSvaOI3CqdrK1f2BAiEA4XbEkCOxWVxbDLihyudClvrgLbZZyODlx5E2phn4gXMCIQDAtvMeJiXlGQBxFr/ci0r99FiYUeag/ZFwOjyhIzWBOQIgYg3bEqzTNn/aAUBS7QGCjlLxKDBD//7/L7nRwI9O6k0CIQCdBnUiY8MM4UpS206JzZXVR3vI4TMiinovD8THJ4E5QQIgRM1QlD1PG5YTxBxZMrLm2weBxsqXhvdJuTc1GXmoUxg=
publicKey:MFwwDQYJKoZIhvcewrwerfrrgfg43534M/ojVz79Y4CgIQ1u1vi/zcKhuhg06OPQY5pTIN1sQYOMPYeEQt6ETuNBDoy+/g7RAQZQmejh3X2ViodexZsCAwEAAQ==
password:O9JBjc86r9IhEoIE6jevJtgsgCXZAKCWH2UtO0tbG62zqIK5G5qJOCm1u9ju+lnno15vmq+TO5WqEWGzvkDNGg==

privateKey是你的私鑰,publicKey是公鑰,password就是你加密后的密碼。我們用到的配置有兩個,一個是公鑰,一個是密碼,配置公鑰的原因是要通過公鑰進行解密。將如上信息保存好,后面再spring boot的配置中要用到。

增加數(shù)據(jù)源相關(guān)配置

增加數(shù)據(jù)源配置信息:

# 阿里巴巴druid數(shù)據(jù)源配置
spring:
 datasource:
 # 數(shù)據(jù)源驅(qū)動類型,這里是druid
  type: com.alibaba.druid.pool.DruidDataSource
  # sql腳本編碼
  sql-script-encoding: utf-8
  druid:
  # 驅(qū)動的類名
   driver-class-name: com.mysql.cj.jdbc.Driver
   # 數(shù)據(jù)庫連接密碼
   username: root
   # 數(shù)據(jù)庫地址
   url: jdbc:mysql://127.0.0.1:3307/spring?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai
   # 這里配置的是前面我們生成的密碼
   password: Y2YOft/vPjw/JFPkevqZZKi8pCHu5ambR2ivSxgipTbL76pOoxNw3Un5Hcarbe9AqUImr+wS7YI6TjJZOVYjzA==
   # 這里設置連接配置,key配置的是我們前面生成的publicKey
   connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJI/xqbyvpVttxfAKulKeSTIb7tZAGaFcPyTnE2r7AHTQ8kOnqKXDda4u59umt9XBFxi7db28KxeVooB138zuRUCAwEAAQ==
   filter:
    config:
    # 啟用druid的攔截器
     enabled: true
   # 連接池的配置信息
   # 初始化時建立物理連接的個數(shù)
   initial-size: 3
   # 連接池最小連接數(shù)
   min-idle: 3
   # 連接池最大連接數(shù)
   max-active: 20
   # 獲取連接時最大等待時間,單位毫秒
   max-wait: 60000
   # 申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執(zhí)行validationQuery檢測連接是否有效。
   test-while-idle: true
   # 既作為檢測的間隔時間又作為testWhileIdel執(zhí)行的依據(jù)
   time-between-connect-error-millis: 60000
   # 銷毀線程時檢測當前連接的最后活動時間和當前時間差大于該值時,關(guān)閉當前連接
   min-evictable-idle-time-millis: 30000
   # 用來檢測連接是否有效的sql 必須是一個查詢語句
   # mysql中為 select 'x'
   # oracle中為 select 1 from dual
   validationQuery: select 'x'
   # 申請連接時會執(zhí)行validationQuery檢測連接是否有效,開啟會降低性能,默認為true
   test-on-borrow: false
   # 歸還連接時會執(zhí)行validationQuery檢測連接是否有效,開啟會降低性能,默認為true
   test-on-return: false
   # 是否緩存preparedStatement,mysql5.5+建議開啟
   pool-prepared-statements: true
   # 當值大于0時poolPreparedStatements會自動修改為true
   max-pool-prepared-statement-per-connection-size: 20
   # 合并多個DruidDataSource的監(jiān)控數(shù)據(jù)
   use-global-data-source-stat: false
   # 配置擴展插件
   #監(jiān)控統(tǒng)計攔截的filters
   filters: stat,wall,slf4j
   # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
   connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
   # 定時輸出統(tǒng)計信息到日志中,并每次輸出日志會導致清零(reset)連接池相關(guān)的計數(shù)器。
   time-between-log-stats-millis: 300000
   # 配置DruidStatFilter
   web-stat-filter:
    enabled: true
    url-pattern: '/*'
    exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
   # 配置DruidStatViewServlet
   stat-view-servlet:
    # 是否啟用StatViewServlet(監(jiān)控頁面)默認值為false(考慮到安全問題默認并未啟動,如需啟用建議設置密碼或白名單以保障安全)
    enabled: true
    url-pattern: '/druid/*'
    # IP白名單(沒有配置或者為空,則允許所有訪問)
    allow: 127.0.0.1,192.168.0.1
    # IP黑名單 (存在共同時,deny優(yōu)先于allow)
    deny: 192.168.0.128
    # 禁用HTML頁面上的“Reset All”功能
    reset-enable: false
    # 登錄名
    login-username: admin
    # 登錄密碼
    login-password: admin

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI