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

Spring Boot 使用 Druid 連接池詳解

這篇具有很好參考價(jià)值的文章主要介紹了Spring Boot 使用 Druid 連接池詳解。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Spring Boot 使用 Druid 連接池詳解

Alibaba Druid 是一個(gè) JDBC 組件庫,包含數(shù)據(jù)庫連接池、SQL Parser 等組件,被大量業(yè)務(wù)和技術(shù)產(chǎn)品使用或集成,經(jīng)歷過嚴(yán)苛的線上業(yè)務(wù)場景考驗(yàn),是值得信賴的技術(shù)產(chǎn)品。Druid Spring Boot Starter 用于幫助你在 Spring Boot 項(xiàng)目中輕松集成 Druid 數(shù)據(jù)庫連接池和監(jiān)控。

https://github.com/alibaba/druid

快速使用

1)在你的 Spring Boot 項(xiàng)目中添加依賴配置:

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

2)添加數(shù)據(jù)源配置:

## Spring DruidDataSource Configuration
# spring.datasource.druid.enable=true
# spring.datasource.druid.name=DataSource-1
# spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
spring.datasource.druid.initial-size=10
spring.datasource.druid.min-idle=10
spring.datasource.druid.max-active=100
spring.datasource.druid.max-wait=6000
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.validation-query=select 1
spring.datasource.druid.time-between-eviction-runs-millis=30000
spring.datasource.druid.min-evictable-idle-time-millis=600000
spring.datasource.druid.max-evictable-idle-time-millis=900000
spring.datasource.druid.keep-alive=true

3)Druid 支持根據(jù) url 來自動探測 JDBC 驅(qū)動, 已在 druid-xxx.jar/META-INF/druid-driver.properties 屬性文件中定義。

jdbc:derby:=org.apache.derby.jdbc.EmbeddedDriver	 
jdbc:mysql:=com.mysql.jdbc.Driver
jdbc:log4jdbc:=net.sf.log4jdbc.DriverSpy
jdbc:oracle:=oracle.jdbc.driver.OracleDriver
jdbc:microsoft:=com.microsoft.jdbc.sqlserver.SQLServerDriver	 
jdbc:jtds:=net.sourceforge.jtds.jdbc.Driver	 
jdbc:postgresql:=org.postgresql.Driver	 
jdbc:fake:=com.alibaba.druid.mock.MockDriver	 
jdbc:hsqldb:=org.hsqldb.jdbcDriver	 
jdbc:db2:=COM.ibm.db2.jdbc.app.DB2Driver
jdbc:sqlite:=org.sqlite.JDBC	 
jdbc:ingres:=com.ingres.jdbc.IngresDriver	 
jdbc:h2:=org.h2.Driver	 
jdbc:mckoi:=com.mckoi.JDBCDriver
jdbc:clickhouse:=ru.yandex.clickhouse.ClickHouseDriver
jdbc:highgo:=com.highgo.jdbc.Driver

如果未能自動探測 JDBC 驅(qū)動,則需指定驅(qū)動類:

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver

連接池配置詳解

Druid Spring Boot Starter 配置屬性的名稱完全遵照 Druid,你可以通過 Spring Boot 配置文件來配置 Druid 數(shù)據(jù)庫連接池和監(jiān)控。

  • JDBC 配置:
# 單數(shù)據(jù)源時(shí),Druid 兼容 JDBC 的配置如下:
spring.datasource.druid.url= # 或spring.datasource.url= 
spring.datasource.druid.username= # 或spring.datasource.username=
spring.datasource.druid.password= # 或spring.datasource.password=
spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=
  • 連接池配置詳解:
# 啟動 Druid 連接池,默認(rèn)開啟
# 多數(shù)據(jù)源配置時(shí),該參數(shù)不生效
spring.datasource.druid.enable=true

# 指定驅(qū)動類名,默認(rèn)從 URL 中自動探測
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver

# 設(shè)置數(shù)據(jù)庫連接
spring.datasource.druid.url=jdbc:mysql://localhost:3306/dbname

# 設(shè)置數(shù)據(jù)庫用戶名
spring.datasource.druid.username=root

# 設(shè)置數(shù)據(jù)庫密碼
spring.datasource.druid.password=123456

# 允許訪問底層連接,默認(rèn)值:true
spring.datasource.druid.access-to-underlying-connection-allowed=true

# 啟用異步關(guān)閉連接,默認(rèn)值:false
# 如果 removeAbandoned = true,則自動開啟。
spring.datasource.druid.async-close-connection-enable=false

# 開啟異步初始化,默認(rèn)值:false
spring.datasource.druid.async-init=false

# 失敗后跳過即用于失敗重連,默認(rèn)值:false
# true 表示向數(shù)據(jù)庫請求連接失敗后,就算后端數(shù)據(jù)庫恢復(fù)正常也不進(jìn)行重連,因此一定要配置 false
spring.datasource.druid.break-after-acquire-failure=false

# 檢查SQL執(zhí)行時(shí)間,默認(rèn)值:false
spring.datasource.druid.check-execute-time=false

# 啟動清除過濾器,默認(rèn)值:true
spring.datasource.druid.clear-filters-enable=true

# 連接屬性配置,多個(gè)用英文分號隔開
spring.datasource.druid.connect-properties=

# 連接出錯(cuò)嘗試幾次重新連接,默認(rèn)值:1
spring.datasource.druid.connection-error-retry-attempts=1

# 指定數(shù)據(jù)庫類型,默認(rèn)自動探測
spring.datasource.druid.db-type=

# 事務(wù)是否自動提交,默認(rèn)值:true
spring.datasource.druid.default-auto-commit=true

# 指定連接默認(rèn)的 catalog,默認(rèn)未設(shè)置
spring.datasource.druid.default-catalog=

# 是否設(shè)置默認(rèn)連接只讀,默認(rèn)未設(shè)置
spring.datasource.druid.default-read-only=true

# 指定連接的事務(wù)的默認(rèn)隔離級別,默認(rèn)未設(shè)置。
# -1 數(shù)據(jù)庫默認(rèn)隔離級別
# 1 未提交讀
# 2 讀寫提交
# 4 可重復(fù)讀
# 8 串行化
spring.datasource.druid.default-transaction-isolation=

# 當(dāng)創(chuàng)建連接池時(shí),創(chuàng)建失敗后是否立即拋異常,默認(rèn)值:false
spring.datasource.druid.fail-fast=false

# 設(shè)置過濾器別名,多個(gè)使用英文逗號隔開,默認(rèn)值:default
# 生產(chǎn)環(huán)境不建議使用其他過濾器。
spring.datasource.druid.filters=stat

# 初始化異常則拋出異常,默認(rèn)值:true
spring.datasource.druid.init-exception-throw=true

# 初始化全局變量,默認(rèn)值:false
spring.datasource.druid.init-global-variants=false

# 初始化變量,默認(rèn)值:false
spring.datasource.druid.init-variants=false

# 初始化連接池大小,默認(rèn)值:0
# 建議與 minIdle 大小保持一致
spring.datasource.druid.initial-size=10

# 開啟 keepAlive 操作,默認(rèn)值:false
# 打開 keepAlive 之后的效果
# 1、初始化連接池時(shí)會填充到 minIdle 數(shù)量。
# 2、連接池中的 minIdle 數(shù)量以內(nèi)的連接,空閑時(shí)間超過 minEvictableIdleTimeMillis,則會執(zhí)行 keepAlive 操作。
# 3、當(dāng)網(wǎng)絡(luò)斷開等原因產(chǎn)生的由 ExceptionSorter 檢測出來的死連接被清除后,自動補(bǔ)充連接到 minIdle 數(shù)量。
spring.datasource.druid.keep-alive=true

# 兩次 keepAlive 操作的時(shí)間間隔,默認(rèn)值:120000(單位毫秒)
spring.datasource.druid.keep-alive-between-time-millis=120000

# 指定連接數(shù)據(jù)庫的超時(shí)時(shí)間,默認(rèn)無限制(單位秒)
spring.datasource.druid.login-timeout=

# 設(shè)置最大連接數(shù),默認(rèn)值:8
spring.datasource.druid.max-active=100

# 最大創(chuàng)建任務(wù)數(shù),默認(rèn)值:3
spring.datasource.druid.max-create-task-count=3

# 連接保持空閑而不被驅(qū)逐的最大時(shí)間,默認(rèn)值:1800000毫秒=30分鐘
spring.datasource.druid.max-evictable-idle-time-millis=1800000

# 最大打開的 prepared-statement 數(shù)量,默認(rèn)值:-1(無限制)
spring.datasource.druid.max-open-prepared-statements=-1

# 設(shè)置最大等待時(shí)間,默認(rèn)值:-1(單位毫秒)
spring.datasource.druid.max-wait=6000

# 允許的最大線程等待數(shù),默認(rèn)值:-1(無限制)
spring.datasource.druid.max-wait-thread-count=-1

# 銷毀線程時(shí)檢測當(dāng)前連接的最后活動時(shí)間和當(dāng)前時(shí)間差大于該值時(shí),關(guān)閉當(dāng)前連接即一個(gè)連接在池中最小生存的時(shí)間。默認(rèn)值:1800000毫秒=30分鐘
spring.datasource.druid.min-evictable-idle-time-millis=1800000

# 設(shè)置最小連接數(shù),默認(rèn)值:0
spring.datasource.druid.min-idle=10

# 指定連接池名稱,未設(shè)置則隨機(jī)生成:`"DataSource-" + System.identityHashCode(this);`
spring.datasource.druid.name=DataSource-1

# 設(shè)置獲取連接時(shí)的重試次數(shù),默認(rèn)值:0
spring.datasource.druid.not-full-timeout-retry-count=0

# 用于控制當(dāng) OnFatalError 發(fā)生時(shí)最大使用連接數(shù)量,用于控制異常發(fā)生時(shí)并發(fā)執(zhí)行SQL的數(shù)量,減輕數(shù)據(jù)庫恢復(fù)的壓力。默認(rèn)值:0
spring.datasource.druid.on-fatal-error-max-active=0

# 是否是 Oracle 數(shù)據(jù)庫,默認(rèn)值:false
spring.datasource.druid.oracle=false

# 物理最大連接數(shù),默認(rèn)值:-1(無限制)
spring.datasource.druid.phy-max-use-count=-1

# 物理超時(shí)時(shí)間,默認(rèn)值:-1(無限制,單位毫秒)
spring.datasource.druid.phy-timeout-millis=-1

# oracle 設(shè)為 true,mysql 設(shè)為 false。分庫分表較多推薦設(shè)置為 false,默認(rèn)值:false
spring.datasource.druid.pool-prepared-statements=false

# 打開PSCache,并且指定每個(gè)連接上PSCache的大小,默認(rèn)值:10
# poolPreparedStatements 默認(rèn)為 false,屬性文件中將 poolPreparedStatements 設(shè)置為 true,則該值生效。
# 若屬性文件中設(shè)置該值且大于0時(shí),poolPreparedStatements 會自動設(shè)置為 true。
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=10

# 查詢超時(shí)時(shí)間,默認(rèn)值:0(無限制,單位秒)
spring.datasource.druid.query-timeout=0

# 指定當(dāng)連接超過廢棄超時(shí)時(shí)間時(shí),是否立刻刪除該連接,默認(rèn)值:false
spring.datasource.druid.remove-abandoned=false

# 廢棄連接超時(shí)指定時(shí)間的連接,默認(rèn)值:5分鐘
spring.datasource.druid.remove-abandoned-timeout-millis=300 * 1000

# 共享預(yù)處理語句,默認(rèn)值:false
spring.datasource.druid.share-prepared-statements=false

# 從連接池借用連接時(shí),是否測試該連接,默認(rèn)值:false
spring.datasource.druid.test-on-borrow=false

# 申請連接時(shí)檢測,如果空閑時(shí)間大于 timeBetweenEvictionRunsMillis,執(zhí)行 validationQuery 檢測連接是否有效。默認(rèn)值:false
spring.datasource.druid.test-on-return=false

# 歸還連接時(shí)會執(zhí)行 validationQuery 檢測連接是否有效,默認(rèn)值:true
spring.datasource.druid.test-while-idle=true

# 指定兩次錯(cuò)誤連接的最大時(shí)間間隔,默認(rèn)值:500毫秒
spring.datasource.druid.time-between-connect-error-millis=500

# 既作為檢測的間隔時(shí)間又作為 testWhileIdel 執(zhí)行的依據(jù)即此值決定是否空閑,因此此值一定要設(shè)置合理。
# 即一個(gè)空閑線程,最大的生成時(shí)間,檢測需要關(guān)閉的空閑連接。默認(rèn)值:60000毫秒
spring.datasource.druid.time-between-eviction-runs-millis=30000

# 事務(wù)查詢超時(shí)時(shí)間,默認(rèn)值:0(小于或等于 0 時(shí)取 query-timeout 的值)
spring.datasource.druid.transaction-query-timeout=0

# 事務(wù)時(shí)間閾值,默認(rèn)值:0(單位毫秒)
spring.datasource.druid.transaction-threshold-millis=0

# 使用非公平鎖,默認(rèn)未設(shè)置
spring.datasource.druid.use-unfair-lock=true

# 使用 Oracle 隱式緩存,默認(rèn)值:true
spring.datasource.druid.use-oracle-implicit-cache=true

# 指定連接的有效檢查類,默認(rèn)未設(shè)置
spring.datasource.druid.valid-connection-checker=

# 用來檢測連接是否有效的 SQL 必須是一個(gè)查詢語句,默認(rèn)未設(shè)
spring.datasource.druid.validation-query=select 1

# 檢測連接是否有效的超時(shí)時(shí)間,默認(rèn)值:-1(單位秒)
spring.datasource.druid.validation-query-timeout=-1

過濾器配置

Druid 內(nèi)置的過濾器類及別名,已在 druid-xxx.jar/META-INF/druid-filter.properties 屬性文件中定義:

druid.filters.default=com.alibaba.druid.filter.stat.StatFilter
druid.filters.stat=com.alibaba.druid.filter.stat.StatFilter
druid.filters.mergeStat=com.alibaba.druid.filter.stat.MergeStatFilter
druid.filters.counter=com.alibaba.druid.filter.stat.StatFilter
druid.filters.encoding=com.alibaba.druid.filter.encoding.EncodingConvertFilter
druid.filters.log4j=com.alibaba.druid.filter.logging.Log4jFilter
druid.filters.log4j2=com.alibaba.druid.filter.logging.Log4j2Filter
druid.filters.slf4j=com.alibaba.druid.filter.logging.Slf4jLogFilter
druid.filters.commonlogging=com.alibaba.druid.filter.logging.CommonsLogFilter
druid.filters.commonLogging=com.alibaba.druid.filter.logging.CommonsLogFilter
druid.filters.wall=com.alibaba.druid.wall.WallFilter
druid.filters.config=com.alibaba.druid.filter.config.ConfigFilter
druid.filters.haRandomValidator=com.alibaba.druid.pool.ha.selector.RandomDataSourceValidateFilter

除 StatFilter 作為默認(rèn)過濾器外,其他都為關(guān)閉狀態(tài)。配置過濾器的方法如下:

# 設(shè)置過濾器別名,多個(gè)使用英文逗號隔開,默認(rèn)值:default
# 生產(chǎn)環(huán)境不建議使用其他過濾器。
spring.datasource.druid.filters=stat

StatViewServlet

Druid 管控臺配置,考慮到安全問題默認(rèn)為關(guān)閉,如需開啟,建議設(shè)置密碼或白名單以保障安全。配置開啟后,才能打開管控臺頁面查看監(jiān)控信息。

瀏覽器訪問:http://127.0.0.1:8080/druid/index.html

## DruidStatViewServletConfiguration
# 是否開啟管控臺頁面訪問,默認(rèn)值:false
spring.datasource.druid.stat-view-servlet.enabled=true
# URL 映射路徑,默認(rèn)值:/druid/*
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 是否允許重置,默認(rèn)允許
# 注意:設(shè)置為 false 后,管控臺的重置按鈕并不會消失,但數(shù)據(jù)不會重置
spring.datasource.druid.stat-view-servlet.reset-enable=false
# 管控臺登錄用戶名,默認(rèn)未設(shè)置
spring.datasource.druid.stat-view-servlet.login-username=admin
# 管控臺登錄密碼,默認(rèn)未設(shè)置
spring.datasource.druid.stat-view-servlet.login-password=admin123
# 管控臺訪問白名單,默認(rèn)值:127.0.0.1
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,10.177.37.15
# 管控臺訪問黑名單,默認(rèn)未設(shè)置
spring.datasource.druid.stat-view-servlet.deny=10.177.37.14

WebStatFilter

開啟 Web 請求監(jiān)控,默認(rèn)為關(guān)閉。配置開啟后,可以在 Druid 管控臺查看 Web 請求的監(jiān)控信息。

## DruidWebStatFilterConfiguration
# 是否開啟 Web 請求的統(tǒng)計(jì),默認(rèn)值:false
spring.datasource.druid.web-stat-filter.enabled=true
# 以下參數(shù)保持默認(rèn)配置即可,生產(chǎn)環(huán)境不建議啟用
# spring.datasource.druid.web-stat-filter.url-pattern=
# spring.datasource.druid.web-stat-filter.exclusions=
# spring.datasource.druid.web-stat-filter.session-stat-enable=
# spring.datasource.druid.web-stat-filter.session-stat-max-count=
# spring.datasource.druid.web-stat-filter.principal-session-name=
# spring.datasource.druid.web-stat-filter.principal-cookie-name=
# spring.datasource.druid.web-stat-filter.profile-enable=

StatFilter

用于統(tǒng)計(jì)監(jiān)控信息,默認(rèn)開啟。

## StatFilter
# 是否開啟統(tǒng)計(jì),默認(rèn)值:true
spring.datasource.druid.filter.stat.enabled=true
# 啟動連接堆跟蹤,默認(rèn)值:false
spring.datasource.druid.filter.stat.connection-stack-trace-enable=false
# 是否在日志中打印慢SQL,默認(rèn)值:false
spring.datasource.druid.filter.stat.log-slow-sql=true
# 設(shè)置慢SQL的執(zhí)行時(shí)長,默認(rèn)值:3000毫秒
spring.datasource.druid.filter.stat.slow-sql-millis=3000
# 設(shè)置慢SQL的日志級別,默認(rèn)值:ERROR
spring.datasource.druid.filter.stat.slow-sql-log-level=ERROR
# 是否合并SQL,默認(rèn)值:false
spring.datasource.druid.filter.stat.merge-sql=false

WallFilter

這是一個(gè)特殊的過濾器,用于監(jiān)控 SQL 安全,避免 SQL 注入,默認(rèn)為關(guān)閉。在 Spring 中配置啟用 WallFilter 時(shí),需要先注入 StatFilter 開啟監(jiān)控、WallFilter
配置各種信息、WallConfig 配置攔截 SQL 的規(guī)則。

WallConfig 配置參數(shù)較多,通常情況下保持默認(rèn)配置即可。WallConfig 配置詳情文檔:https://www.cnblogs.com/soundcode/p/6483899.html

## WallFilter
# 是否開啟 SQL 監(jiān)控,默認(rèn)值:false
spring.datasource.druid.filter.wall.enabled=true

LogFilter

Druid 內(nèi)置提供了四種 LogFilter(Log4jFilter、Log4j2Filter、CommonsLogFilter、Slf4jLogFilter),用于輸出 JDBC 執(zhí)行的日志。這些
Filter 都是 Filter-Chain 擴(kuò)展機(jī)制中的
Filter,所以配置方式可以參考這里:Druid 中使用 log4j2 進(jìn)行日志輸出

盡管 Druid 支持日志過濾器,但在生產(chǎn)環(huán)境幾乎是不可能開啟日志配置的。所以,這里只作了解,實(shí)際應(yīng)用比較復(fù)雜。

# 是否開啟日志,默認(rèn)值:false
spring.datasource.druid.filter.slf4j.enabled=false
spring.datasource.druid.filter.log4j.enabled=false
spring.datasource.druid.filter.log4j2.enabled=false
spring.datasource.druid.filter.commons-log.enabled=false

EncodingConvertFilter

由于歷史原因,一些數(shù)據(jù)庫保存數(shù)據(jù)的時(shí)候使用了錯(cuò)誤編碼,需要做編碼轉(zhuǎn)換。通過 connectionProperties 來配置客戶端編碼和服務(wù)器端編碼。

# 是否開啟字符編碼轉(zhuǎn)換,默認(rèn)值:false
spring.datasource.druid.filter.encoding.enabled=true
# 指定客戶端和服務(wù)端的字符編碼
spring.datasource.druid.connection-properties=clientEncoding=UTF-8;serverEncoding=ISO-8859-1

ConfigFilter

ConfigFilter的作用包括:

  1. 從配置文件中讀取配置
  2. 從遠(yuǎn)程http文件中讀取配置
  3. 為數(shù)據(jù)庫密碼提供加密功能

詳情查看官方文檔:使用 ConfigFilter

# 是否開啟配置,默認(rèn)值:false
spring.datasource.druid.filter.config.enabled=true
# 密碼加密處理后,需要開啟解密
spring.datasource.druid.connection-properties=config.decrypt=true

多數(shù)據(jù)源配置

Spring Boot 2.X 版本不再支持配置繼承,多數(shù)據(jù)源的話每個(gè)數(shù)據(jù)源的所有配置都需要單獨(dú)配置,否則配置不會生效。

1)添加多數(shù)據(jù)配置:

## Spring DruidDataSource Configuration
# spring.datasource.druid.one.name=DataSource-1
# spring.datasource.druid.one.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.one.url=jdbc:mysql://localhost:3306/dbname1?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.druid.one.username=root
spring.datasource.druid.one.password=123456
spring.datasource.druid.one.initial-size=10
spring.datasource.druid.one.min-idle=10
spring.datasource.druid.one.max-active=100
spring.datasource.druid.one.max-wait=6000
spring.datasource.druid.one.test-while-idle=true
spring.datasource.druid.one.test-on-borrow=false
spring.datasource.druid.one.test-on-return=false
spring.datasource.druid.one.validation-query=select 1
spring.datasource.druid.one.time-between-eviction-runs-millis=30000
spring.datasource.druid.one.min-evictable-idle-time-millis=600000
spring.datasource.druid.one.max-evictable-idle-time-millis=900000
spring.datasource.druid.one.keep-alive=true


## Spring DruidDataSource Configuration
# spring.datasource.druid.two.name=DataSource-1
# spring.datasource.druid.two.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.two.url=jdbc:mysql://localhost:3306/dbname2?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.druid.two.username=root
spring.datasource.druid.two.password=123456
spring.datasource.druid.two.initial-size=10
spring.datasource.druid.two.min-idle=10
spring.datasource.druid.two.max-active=100
spring.datasource.druid.two.max-wait=6000
spring.datasource.druid.two.test-while-idle=true
spring.datasource.druid.two.test-on-borrow=false
spring.datasource.druid.two.test-on-return=false
spring.datasource.druid.two.validation-query=select 1
spring.datasource.druid.two.time-between-eviction-runs-millis=30000
spring.datasource.druid.two.min-evictable-idle-time-millis=600000
spring.datasource.druid.two.max-evictable-idle-time-millis=900000
spring.datasource.druid.two.keep-alive=true

2)創(chuàng)建多數(shù)據(jù)源:

@Primary
@Bean
@ConfigurationProperties("spring.datasource.druid.one")
public DruidDataSource dataSourceOne() {
	return DruidDataSourceBuilder.create().build();
}

@Bean
@ConfigurationProperties("spring.datasource.druid.two")
public DruidDataSource dataSourceTwo() {
	return DruidDataSourceBuilder.create().build();
}

3)使用多數(shù)據(jù)源:

@Autowired
private DruidDataSource dataSourceOne;

@Autowired
@Qualifier("dataSourceTwo")
private DruidDataSource dataSourceTwo;

配置多數(shù)據(jù)源的注意事項(xiàng):文章來源地址http://www.zghlxwxcb.cn/news/detail-403990.html

  • 配置多數(shù)據(jù)源時(shí),最好通過 @Primary 指定默認(rèn)數(shù)據(jù)源。
  • Druid 創(chuàng)建數(shù)據(jù)源對象時(shí),建議使用 DruidDataSource 代替 DataSource。
  • Druid 創(chuàng)建數(shù)據(jù)源對象時(shí),注意創(chuàng)建 Bean 的方法名,最好通過 @Bean(“dataSourceOne”) 來指定數(shù)據(jù)源對象的名稱。
  • 多數(shù)據(jù)源通常結(jié)合 ORM 框架一起使用。

到了這里,關(guān)于Spring Boot 使用 Druid 連接池詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot 數(shù)據(jù)庫操作Druid和HikariDataSource

    Spring Boot 數(shù)據(jù)庫操作Druid和HikariDataSource

    目錄 Spring Boot? 數(shù)據(jù)庫操作 應(yīng)用實(shí)例-需求 創(chuàng)建測試數(shù)據(jù)庫和表 進(jìn)行數(shù)據(jù)庫開發(fā), 在pom.xml 引入data-jdbc starter 參考官方文檔 需要在pom.xml 指定導(dǎo)入數(shù)據(jù)庫驅(qū)動 在application.yml 配置操作數(shù)據(jù)源的信息 創(chuàng)建beanFurn.java 測試結(jié)果 整合Druid 到Spring-Boot? 官方文檔 Durid 基本使用 修改

    2024年02月06日
    瀏覽(28)
  • Spring Boot + Druid 實(shí)現(xiàn)監(jiān)控 MySQL 性能,簡單又實(shí)用!

    Spring Boot + Druid 實(shí)現(xiàn)監(jiān)控 MySQL 性能,簡單又實(shí)用!

    來源:blog.csdn.net/lvoelife/article/details/128092586 我們都使用過連接池,比如 C3P0,DBCP,hikari, Druid ,雖然HikariCP的速度稍快,但Druid能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能,也是阿里巴巴的開源項(xiàng)目。 Druid是阿里巴巴開發(fā)的號稱為監(jiān)控而生的數(shù)據(jù)庫連接池,在功能、性能、擴(kuò)展性方面,

    2024年02月11日
    瀏覽(28)
  • Spring Boot集成Druid實(shí)現(xiàn)多數(shù)據(jù)源的兩種方式

    Spring Boot集成Druid實(shí)現(xiàn)多數(shù)據(jù)源的兩種方式

    目錄 項(xiàng)目場景: 一、集成com.baomidou的方式 1、maven依賴: 2、?配置文件: 3、?使用注解切換數(shù)據(jù)源:? 二、基于AOP手動實(shí)現(xiàn)多數(shù)據(jù)源原生的方式 1、maven依賴: 2、?配置文件: 3、?多數(shù)據(jù)源名稱類 4、自定義注解? 5、配置類 6、動態(tài)數(shù)據(jù)源配置 ?7、AOP切面攔截注解 8、Dao層,

    2024年02月09日
    瀏覽(20)
  • Jpa與Druid線程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久層

    Jpa與Druid線程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久層

    ? ? ? ? ? ? ? ? ? ? ? Jpa與Druid線程池及Spring Boot整合(一) Jpa與Druid線程池及Spring Boot整合(二):幾個(gè)坑 附錄官網(wǎng)文檔:core.domain-events域事件 docker實(shí)戰(zhàn)(一):centos7 yum安裝docker docker實(shí)戰(zhàn)(二):基礎(chǔ)命令篇 docker實(shí)戰(zhàn)(三):docker網(wǎng)絡(luò)模式(超詳細(xì)) docker實(shí)戰(zhàn)(四):docker架構(gòu)原理 docker實(shí)戰(zhàn)(五

    2024年02月13日
    瀏覽(34)
  • Jpa與Druid線程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑異常處理方案

    Jpa與Druid線程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑異常處理方案

    ? ? ? ? ? ? ? ? ? ?? docker實(shí)戰(zhàn)(一):centos7 yum安裝docker docker實(shí)戰(zhàn)(二):基礎(chǔ)命令篇 docker實(shí)戰(zhàn)(三):docker網(wǎng)絡(luò)模式(超詳細(xì)) docker實(shí)戰(zhàn)(四):docker架構(gòu)原理 docker實(shí)戰(zhàn)(五):docker鏡像及倉庫配置 docker實(shí)戰(zhàn)(六):docker 網(wǎng)絡(luò)及數(shù)據(jù)卷設(shè)置 docker實(shí)戰(zhàn)(七):docker 性質(zhì)及版本選擇 認(rèn)知升維: 道、法、

    2024年02月13日
    瀏覽(27)
  • 數(shù)據(jù)庫連接池druid參數(shù)詳解

    1、type: 數(shù)據(jù)源類型,這里使用了Druid連接池的類型。 2、url: 數(shù)據(jù)庫連接的URL。 注意事項(xiàng):需要根據(jù)實(shí)際情況修改URL。 3、username: 數(shù)據(jù)庫用戶名。 4、password: 數(shù)據(jù)庫密碼 包含一些特殊字符的時(shí)候需要加引號。 5、initialSize: 連接池初始化時(shí)創(chuàng)建的連接數(shù)。 需要根據(jù)實(shí)際情況設(shè)置

    2024年02月15日
    瀏覽(19)
  • Spring Boot入門(07):整合 MySQL 和 Druid數(shù)據(jù)源 | 全網(wǎng)最詳細(xì)保姆級教學(xué)(兩萬字)

    Spring Boot入門(07):整合 MySQL 和 Druid數(shù)據(jù)源 | 全網(wǎng)最詳細(xì)保姆級教學(xué)(兩萬字)

    ????????作為現(xiàn)代Web應(yīng)用開發(fā)的重要技術(shù)棧之一,Spring Boot在快速構(gòu)建可靠、高效、易維護(hù)的應(yīng)用方面具有獨(dú)特的優(yōu)勢。而在實(shí)際開發(fā)中,數(shù)據(jù)庫作為系統(tǒng)的重要組成部分,對于數(shù)據(jù)源的選擇和配置也是至關(guān)重要的。本篇文章將全面介紹如何使用Spring Boot整合MySQL和Druid數(shù)據(jù)

    2024年02月12日
    瀏覽(25)
  • 如何在Spring Boot中使用Redis連接池?

    ??在Spring Boot中使用Redis連接池,你通常不需要做太多額外配置,因?yàn)镾pring Boot Data Redis默認(rèn)使用了一個(gè)連接池,即LettuceConnectionFactory或JedisConnectionFactory,它們內(nèi)部已經(jīng)實(shí)現(xiàn)了連接池功能。 ??下面是一些步驟和配置,以確保你在Spring Boot應(yīng)用中正確使用了Redis連接池: ??

    2024年03月11日
    瀏覽(27)
  • spring boot shardingsphere mybatis-plus druid mysql 搭建mysql數(shù)據(jù)庫讀寫分離架構(gòu)

    spring boot shardingsphere mybatis-plus druid mysql 搭建mysql數(shù)據(jù)庫讀寫分離架構(gòu)

    ##關(guān)于window mysql主從搭建簡單教程 傳送門?window mysql5.7 搭建主從同步環(huán)境-CSDN博客 ##父pom.xml ##模塊pom.xml ##yml配置 ##mapper.xml ##TestMapper ##TestService ##TestController ##瀏覽器訪問 ##數(shù)據(jù)庫

    2024年01月21日
    瀏覽(26)
  • Spring Boot中Elasticsearch的連接配置、原理與使用

    Spring Boot中Elasticsearch的連接配置、原理與使用

    Elasticsearch是一種開源的分布式搜索和數(shù)據(jù)分析引擎,它可用于全文搜索、結(jié)構(gòu)化搜索、分析等應(yīng)用場景。在Spring Boot中,我們可以通過Elasticsearch實(shí)現(xiàn)對數(shù)據(jù)的搜索和分析。本文將介紹Spring Boot中Elasticsearch的連接配置、原理和使用方法。 在Spring Boot中,我們可以通過引入Elast

    2024年02月11日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包