我需要在运行时更改与数据库的连接。例如,如果请求的参数是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;
}
}
答案 0 :(得分:1)
看起来您正在寻找一些数据源路由。 Spring有AbstractRoutingDataSource用于运行时检测应该使用什么数据源。
路由getConnection()调用的抽象DataSource实现 基于查找键的各种目标DataSource之一。
您也可以通过setDefaultTargetDataSource
方法设置默认数据源。
它以这样的方式工作:在Bean配置阶段将您需要的数据源放在AbstractRoutingDataSource的地图中,当您需要使用特定数据源时,将此源的键放入链接到的上下文中路由器。此ds-key链接到当前线程。
以下是示例:Dynamic DataSource Routing with Spring 和Spring DataSource Routing
答案 1 :(得分:1)