我在Spring Boot中有多租户数据库。我在map(immutable bean)中存储多个spring JDBC模板(基于tomcat数据源,手动配置)。我在请求中选择了基于uuid的正确数据源(每个数据库的连接池)。我在Spring Boot中禁用了标准配置:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
事务管理器配置的正确方法是什么?使用单一数据源,我可以使用PlatformTransactionManager,但是如何在spring中使用多个jdbc模板/数据源?如果我可以动态设置所有内容,那将是最好的。提前谢谢。
答案 0 :(得分:0)
这是使用多个数据源的解决方案
http://www.baeldung.com/spring-data-jpa-multiple-databases
配置两个数据源
如果需要配置多个数据源,可以应用上一节中描述的相同技巧。但是,您必须将其中一个DataSource @Primary标记为未来的各种自动配置,以期能够按类型获取。
如果您创建自己的DataSource,则自动配置将退回。在下面的示例中,我们提供的功能集与自动配置在主数据源上提供的功能完全相同
@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