【发布时间】:2018-02-06 17:37:12
【问题描述】:
我需要在运行时更改与数据库的连接。例如,如果请求的参数是 BD1,则连接数据库 1,如果是 BD2,则连接数据库 2,等等
我正在使用弹簧靴。最好的方法是什么。
我有这个@Configuration,但不知道我的存储库如何使用。
@Configuration
public class DataSourceConfiguration {
@Bean(name = "ccteste")
@ConfigurationProperties("spring.ciclocairu.teste.datasource")
@Primary
public DataSource ciclocairuTeste() {
return DataSourceBuilder.create().build();
}
@Bean(name = "ccprod")
@ConfigurationProperties("spring.ciclocairu.prod.datasource")
public DataSource ciclocairuProd() {
return DataSourceBuilder.create().build();
}
@Bean(name = "tmccteste")
@Autowired
@Primary
DataSourceTransactionManager transactionManagerCicloCairuTeste(@Qualifier("ccteste") DataSource datasource) {
DataSourceTransactionManager txm = new DataSourceTransactionManager(datasource);
return txm;
}
@Bean(name = "tmccprod")
@Autowired
@Primary
DataSourceTransactionManager transactionManagerCicloCairuProd(@Qualifier("ccprod") DataSource datasource) {
DataSourceTransactionManager txm = new DataSourceTransactionManager(datasource);
return txm;
}
}
【问题讨论】:
-
如果真的需要,请搜索多租户。但是,基于环境(测试与产品)创建 bean 似乎不合适。应该有一个 DataSource bean,其中 bean 是从一个属性文件配置的。属性文件中的值基于环境。
-
谢谢,我明白了,但是,这不仅仅是产品与测试,我的想法是我的系统可以连接到我公司的其他子公司
标签: java spring spring-boot spring-data