簡體   English   中英

帶有Spring Boot的多租戶數據庫配置的正確設置事務管理器

[英]Proper setting transaction manager with multitenant databases configuration with spring-boot

我在Spring Boot中有多租戶數據庫。 我在地圖(不可變bean)中存儲了多個spring JDBC模板(基於手動配置的tomcat數據源)。 我根據請求中的uuid(每個數據庫的連接池)選擇合適的數據源。 我通過以下方式禁用了Spring Boot中的標准配置:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

事務管理器配置的正確方法是什么? 對於單個數據源,我可以使用PlatformTransactionManager,但是在春季如何對多個jdbc模板/數據源進行處理? 如果可以動態設置所有內容,那將是最好的。 提前致謝。

這是使用多個數據源的解決方案

http://www.baeldung.com/spring-data-jpa-multiple-databases

配置兩個數據源

如果需要配置多個數據源,則可以應用上一節中介紹的相同技巧。 但是,您必須將DataSource @Primary中的一個標記為,因為將來各種自動配置都希望能夠按類型獲取一個。

如果您創建自己的數據源,則自動配置將退出。 在下面的示例中,我們提供了與自動配置在主數據源上提供的功能完全相同的功能集

@Bean
@Primary
@ConfigurationProperties("app.datasource.foo")
public DataSourceProperties fooDataSourceProperties() {
    return new DataSourceProperties();
}

@Bean
@Primary
@ConfigurationProperties("app.datasource.foo")
public DataSource fooDataSource() {
    return fooDataSourceProperties().initializeDataSourceBuilder().build();
}

@Bean
@ConfigurationProperties("app.datasource.bar")
public BasicDataSource barDataSource() {
    return (BasicDataSource) DataSourceBuilder.create()
            .type(BasicDataSource.class).build();
}

fooDataSourceProperties必須標記為@Primary,以便數據庫初始化程序功能使用您的副本(您應該使用該副本)。

app.datasource.foo.type=com.zaxxer.hikari.HikariDataSource
app.datasource.foo.maximum-pool-size=30

app.datasource.bar.url=jdbc:mysql://localhost/test
app.datasource.bar.username=dbuser
app.datasource.bar.password=dbpass
app.datasource.bar.max-total=30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM