黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Spring多數(shù)據(jù)源的配置

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

更新時間:2022-03-24 09:55:51 來源:動力節(jié)點 瀏覽1702次

很多朋友對Spring多數(shù)據(jù)源的配置不是很了解,下面小編就來給大家詳細(xì)介紹一下。

1.什么是數(shù)據(jù)源

ADataSource是連接到物理數(shù)據(jù)庫的工廠。它是DriverManager工具的替代方案。數(shù)據(jù)源使用 URL 以及用戶名/密碼憑據(jù)來建立數(shù)據(jù)庫連接。

在 Java 中,數(shù)據(jù)源實現(xiàn)了javax.sql.DataSource接口。此數(shù)據(jù)源通常會在 JNDI 服務(wù)中注冊,并且可以使用其 JNDI 名稱來發(fā)現(xiàn)。

我們可以使用數(shù)據(jù)源來獲取:

標(biāo)準(zhǔn)Connection對象

可用于連接池的連接

可用于分布式事務(wù)和連接池的連接

2.配置數(shù)據(jù)源

Spring boot 允許以兩種方式定義數(shù)據(jù)源配置:

Java 配置

屬性配置

在應(yīng)用程序啟動期間,在為我們配置DataSource bean之前DataSourceAutoConfiguration檢查類路徑上的DataSource.class(或EmbeddedDatabaseType.class )以及其他一些事情。

(1)Maven 依賴

如果尚未定義,請將spring-boot-starter-data-jpa包含到項目中。這種依賴帶來了所有必要的依賴,包括各種數(shù)據(jù)庫的 JDBC 驅(qū)動程序,例如mysql-connector-java連接到MySQL數(shù)據(jù)庫。

如果我們計劃在某個步驟(例如,測試)使用嵌入式數(shù)據(jù)庫,我們可以單獨導(dǎo)入H2 DB。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.4.1</version> 
    <scope>runtime</scope> 
</dependency>

(2)屬性配置

DataSource配置由文件spring.datasource.*中的配置屬性條目 ( ) 提供application.properties。

屬性配置將配置與應(yīng)用程序代碼分離。這樣,我們甚至可以從配置提供者系統(tǒng)中導(dǎo)入數(shù)據(jù)源配置。

下面給出的配置顯示了H2、MySQL、Oracle和SQL Server數(shù)據(jù)庫的示例屬性。

# H2 DB
spring.datasource.url=jdbc:h2:file:C:/temp/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
# Oracle
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
# SQL Server
spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springbootdb
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

(3)Java 配置

創(chuàng)建DataSource bean 的推薦方法是在使用@Configuration注釋注釋的類中使用DataSourceBuilder類。

給出的是 H2 DB 的示例 bean。請根據(jù)需要配置其他 bean。

@Configuration
public class JpaConfig {
    @Bean
    public DataSource getDataSource()
    {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("org.h2.Driver");
        dataSourceBuilder.url("jdbc:h2:file:C:/temp/test");
        dataSourceBuilder.username("sa");
        dataSourceBuilder.password("");
        return dataSourceBuilder.build();
    }
}

(4)JNDI 數(shù)據(jù)源

假設(shè)我們將 Spring Boot 應(yīng)用程序部署到應(yīng)用程序服務(wù)器。在這種情況下,我們可能希望使用 Application Server 的內(nèi)置功能來配置和管理 DataSource,并使用 JNDI 訪問它。

我們可以使用spring.datasource.jndi-name屬性來做到這一點。

#JBoss defined datasource using JNDI
spring.datasource.jndi-name = java:jboss/datasources/testDB

3.連接池

(1)HikariCP、Tomcat 池和 Commons DBCP2

對于要創(chuàng)建的池數(shù)據(jù)源,Spring boot 會驗證有效的Driver類是否可用。如果我們設(shè)置spring.datasource.driver-class-name屬性,那么必須找到并加載提到的驅(qū)動程序類。

自動配置首先嘗試查找和配置HikariCP。如果 HikariCP 可用,它總是選擇它。

否則,如果找到Tomcat Pooling,則對其進(jìn)行配置。

如果 HikariCP 和 Tomcat Pooling 數(shù)據(jù)源都不可用,并且Commons DBCP2可用,則使用它。

spring-boot-starter-data-jpastarter 自動獲得對HikariCP.

(2)自定義連接池默認(rèn)值

還可以通過使用它們各自的前綴(、和)來微調(diào)特定于實現(xiàn)的設(shè)置。spring.datasource.hikari.*spring.datasource.tomcat.*spring.datasource.dbcp2.*

例如,我們可以使用以下屬性來自定義 DBCP2 連接池。

spring.datasource.dbcp2.initial-size = 50
spring.datasource.dbcp2.max-idle = 50
spring.datasource.dbcp2.default-query-timeout = 10000
spring.datasource.dbcp2.default-auto-commit = true

4.Spring boot 多數(shù)據(jù)源

要配置多個數(shù)據(jù)源,請根據(jù)需要創(chuàng)建任意數(shù)量的 bean 定義,但將其中一個DataSource實例標(biāo)記為@Primary。

請記住,如果我們創(chuàng)建自己的數(shù)據(jù)源,自動配置就會退出。在這種情況下,我們負(fù)責(zé)為所有數(shù)據(jù)源 bean 提供配置。

@Configuration
public class JpaConfig {
    @Bean(name = "h2DataSource")
    public DataSource h2DataSource()
    {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("org.h2.Driver");
        dataSourceBuilder.url("jdbc:h2:file:C:/temp/test");
        dataSourceBuilder.username("sa");
        dataSourceBuilder.password("");
        return dataSourceBuilder.build();
    }
    @Bean(name = "mySqlDataSource")
    @Primary
    public DataSource mySqlDataSource()
    {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.url("jdbc:mysql://localhost/testdb");
        dataSourceBuilder.username("dbuser");
        dataSourceBuilder.password("dbpass");
        return dataSourceBuilder.build();
    }
}

在自動裝配數(shù)據(jù)源時,spring boot 將首選主數(shù)據(jù)源,即“mySqlDataSource”。要自動裝配另一個非主數(shù)據(jù)源,請使用@Qualifier注釋。

自動裝配主數(shù)據(jù)源

@Autowired
DataSource dataSource;

Autowire 非主數(shù)據(jù)源

@Autowired
@Qualifier("h2DataSource")
DataSource dataSource;

5. 結(jié)論

Spring boot 提供了創(chuàng)建數(shù)據(jù)源 bean 的直接方法——使用屬性配置或使用 java 配置。Spring Boot 提供現(xiàn)成的自動配置以供使用,可以使用application.properties文件中的高級選項進(jìn)一步定制。

Spring boot 嘗試查找和配置連接池,首先是 HikariCP,其次是 Tomcat 池,最后是 Commons DBCP2。HikariCP內(nèi)置spring-boot-starter-jdbc或spring-boot-starter-data-jpa啟動器。

我們可以配置多個數(shù)據(jù)源,我們必須標(biāo)記為其中之一@Primary。默認(rèn)情況下,主數(shù)據(jù)源是自動裝配的,其他數(shù)據(jù)源需要與@Qualifier注釋一起自動裝配。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日皮视频免费观看 | 成人18免费网站 | 国产无套粉嫩白浆在线精品 | 午夜色图 | 日本中文字幕二区三区 | 久久狠狠色狠狠色综合 | 黄色性情视频 | 国产区精品福利在线观看精品 | 特级一级毛片免费看 | 久久久久国产一级毛片高清板 | 亚洲一级特黄 | 伊人网在线视频观看 | 欧美怡红院在线观看 | 国产精品99久久久久久董美香 | 午夜精品视频在线看 | 最近中文字幕国语免费高清6 | 欧美你懂的| 黄色视屏在线免费看 | 久草视| 青草青草久热精品视频在线网站 | 性欧洲精品videos' | 中文字幕亚洲综合久久202 | 一区二区视频在线 | 日韩国产免费 | 欧美日韩高清在线 | 男女羞羞的视频网站在线观看 | 国产91av视频 | 二区三区不卡不卡视频 | 18黄网站 | 白洁的性荡生活全文 | 亚洲国产精品一区二区久久 | 深爱开心激情网 | 国产高清在线视频一区二区三区 | 欧美精品日韩一区二区三区 | 久久综合中文字幕一区二区 | 性a视频 | 丝袜美腿美女被狂躁动态图片 | 青春草在线免费视频 | 成片免费的禁v影片 | 日日干综合 | 欧美亚洲国产片在线观看 |