springboot2.1.9預設支援三種資料來源(connection pool):
"com.zaxxer.hikari.hikaridatasource"
,"org.apache.tomcat.jdbc.pool.datasource"
,"org.apache.commons.dbcp2.basicdatasource"
如果classpath下存在資料來源,springboot會自動配置生成datasource bean。如果classpath下如果存在多種資料來源,會自動配置為其生成乙個datasource bean。 springboot預設載入的順序為:tomcat->hikari->dbcp2。
新增依賴時,如果是:
org.springframework.boot<
/groupid>
spring-boot-starter-jdbc<
/artifactid>
<
/dependency>
系統會自動生成tomcat 型別的資料來源,如果和自定義的資料來源衝突,那麼可以新增將其改為:
org.springframework.boot<
/groupid>
spring-boot-starter-jdbc<
/artifactid>
<
!-- 排除tomcat-jdbc依賴 --
>
org.apache.tomcat<
/groupid>
tomcat-jdbc<
/artifactid>
<
/exclusion>
<
/exclusions>
<
/dependency>
也可以直接引入jpa依賴:
org.springframework.boot<
/groupid>
spring-boot-starter-data-jpa<
/artifactid>
<
/dependency>
當然,當構建專案時如果引入了如下,會在專案中自動注入hikari 資料來源
org.springframework.boot<
/groupid>
spring-boot-starter-parent<
/artifactid>
2.1.9
.release<
/version>
>
<
!-- lookup parent from repository --
>
<
/parent>
具體是因為springboot在1.x版本中,預設連線池是tomcat的連線池,在springboot在2.x版本中更換為hikaricp資料庫連線池。
首先在配置資料來源的類上加上@configuration註解,宣告其為配置類。
@configuration
public class hakariconfig
其次,配置資料來源,具體做法如下:
@bean //注入bean
@configurationproperties
("spring.datasource"
)public datasource datasource()
- jdbcurl is required with driverclassname."
, this.poolname)
; throw new illegalargumentexception
("jdbcurl is required with driverclassname.");
} logger.
error
("{} - datasource or datasourceclassname or jdbcurl is required."
, this.poolname)
; throw new illegalargumentexception
("datasource or datasourceclassname or jdbcurl is required.");
}
從原始碼來看,
如果driverclassname讀取到了而jdbcurl沒讀到時會報jdbcurl is required with driverclassname;
兩個都沒讀到報datasource or datasourceclassname or jdbcurl is required.
那麼根據springboot的自動注入機制,對應該類的兩個成員變數:
private string driverclassname;
private string jdbcurl;
spring.datasource.jdbcurl=***
spring.datasource.driverclassname=***
此外,
@configurationproperties(prefix = ***)註解的引數字首相同時只能出現在乙個方法上,如多個方法都需要,可以定義乙個配置類來解決,具體做法:
configurationproperties
(prefix =
"jdbc"
)public class jdbcproperties
@configuration
// 通過@enableconfigurationproperties(jdbcproperties.class)來宣告要使用jdbcproperties這個類的物件
@enableconfigurationproperties
(jdbcproperties.class)
public class jdbcconfiguration
}
參考:
## 資料庫配置
spring.datasource.type=com.zaxxer.hikari.hikaridatasource
spring.datasource.driverclassname = com.mysql.jdbc.driver
spring.datasource.url = jdbc:mysql:
//localhost:
3306
/ssm?useunicode=true&characterencoding=utf-
8&usessl=false
spring.datasource.username = root
spring.datasource.password = root
## hikari 連線池配置 ----/
## 最小空閒連線數量
spring.datasource.hikari.minimum-idle=
5## 空閒連線存活最大時間,預設600000(10分鐘)
spring.datasource.hikari.idle-timeout=
180000
## 連線池最大連線數,預設是10
spring.datasource.hikari.maximum-pool-size=
10## 此屬性控制從池返回的連線的預設自動提交行為,預設值:true
spring.datasource.hikari.
auto
-commit=true
## 連線池名稱
spring.datasource.hikari.pool-name=myhikaricp
## 此屬性控制池中連線的最長生命週期,值0表示無限生命週期,預設1800000即30分鐘
spring.datasource.hikari.max-lifetime=
1800000
## 資料庫連線超時時間,預設30秒,即30000
spring.datasource.hikari.connection-timeout=
30000
spring.datasource.hikari.connection-test-query=select 1
多看原始碼 Spring Boot預設資料來源
在pom檔案中直接依賴官方提供的spring boot start jdbc模組或者spring boot start data jpa模組。org.springframework.bootgroupid spring boot starter jdbcartifactid dependency s...
Spring Boot多資料來源配置
方案實現 新建兩個配置類 即加 configuration註解的類 乙個為primarydatasourceconfig,用來配置本專案的資料來源 另乙個叫seconddatasourceconfig,用來配置需要同步的資料來源。如下 configuration public class prima...
springboot整合多資料來源
多資料來源產生的問題 事物管理 在實際專案中,怎麼樣搭建多資料來源 區分資料來源 舉個例子 2個資料來源 test001 test002 1 分包結構 com.baidu.test001 訪問test001資料庫 daoservice com.baidu.test002 訪問test002資料庫 d...