druid-spring-boot-3-starter目前最新版本是1.2.20,雖然適配了SpringBoot3,但缺少自動裝配的配置文件,會導致載入時報載入驅動異常。 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-sp ...
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
,
文件中添加如下內容:
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