SpringBoot3整合Druid資料來源的解決方案

Evan1024發表於2024-03-05

druid-spring-boot-3-starter目前最新版本是1.2.20,雖然適配了SpringBoot3,但缺少自動裝配的配置檔案,會導致載入時報載入驅動異常。

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

解決方案

需要手動在resources目錄下建立META-INF/spring/目錄,並且在META-INF/spring/建立 org.springframework.boot.autoconfigure.AutoConfiguration.imports,
image
檔案中新增如下內容:

com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure

application.yaml

新增druid連線池配置項

spring:
  datasource:
    # 連線池型別 
    type: com.alibaba.druid.pool.DruidDataSource

    # Druid的其他屬性配置 springboot3整合情況下,資料庫連線資訊必須在Druid屬性下!
    druid:
      url: jdbc:mysql://localhost:3306/day01
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 初始化時建立物理連線的個數
      initial-size: 5
      # 連線池的最小空閒數量
      min-idle: 5
      # 連線池最大連線數量
      max-active: 20
      # 獲取連線時最大等待時間,單位毫秒
      max-wait: 60000
      # 申請連線的時候檢測,如果空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連線是否有效。
      test-while-idle: true
      # 既作為檢測的間隔時間又作為testWhileIdel執行的依據
      time-between-eviction-runs-millis: 60000
      # 銷燬執行緒時檢測當前連線的最後活動時間和當前時間差大於該值時,關閉當前連線(配置連線在池中的最小生存時間)
      min-evictable-idle-time-millis: 30000
      # 用來檢測資料庫連線是否有效的sql 必須是一個查詢語句(oracle中為 select 1 from dual)
      validation-query: select 1
      # 申請連線時會執行validationQuery檢測連線是否有效,開啟會降低效能,預設為true
      test-on-borrow: false
      # 歸還連線時會執行validationQuery檢測連線是否有效,開啟會降低效能,預設為true
      test-on-return: false
      # 是否快取preparedStatement, 也就是PSCache,PSCache對支援遊標的資料庫效能提升巨大,比如說oracle,在mysql下建議關閉。
      pool-prepared-statements: false
      # 要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache佔用記憶體過多的問題,可以把這個數值配置大一些,比如說100
      max-pool-prepared-statement-per-connection-size: -1
      # 合併多個DruidDataSource的監控資料
      use-global-data-source-stat: true

相關文章