我需要在运行时更改与数据库的连接。例如,如果请求的参数是BD1,则连接数据库1,如果是BD2,则连接数据库2,等等。
我用的是Spring靴。最好的方法是什么。
我有这个@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;
}
}
请看一下我在管理具有多个数据源的事务、相同应用程序代码的实体管理器方面的回答
或者我的博文:使用Spring Boot、JPA、Hibernate和Postgres的多租户应用程序
看起来您正在寻找一些数据源路由。Spring有AbstractRoutingDataSource用于运行时检测应该使用什么数据源。
基于查找键将getConnection()调用路由到各种目标数据源之一的抽象数据源实现。
您还可以通过setDefaultTargetDataSource
方法设置默认数据源。
它的工作方式是:在bean配置阶段,将所需的数据源放在AbstractRoutingDataSource的映射中,当需要使用特定的数据源时,将该源的键放在链接到路由器的上下文中。此ds键链接到当前线程。
以下是示例:带Spring的动态数据源路由和Spring数据源路由
问题内容: 我想向管理界面公开一些(特定于应用程序的)设置,以便用户可以轻松地更改它们,也不必重新启动Django。 我应该怎么做? 我在http://djangopackages.com/grids/g/live-setting/上签出了应用程序(btw django-constance最吸引人),但实际上所有这些应用程序所做的就是将值存储在数据库中,从而提供了一个网站。界面来更改它们,并进行缓
我在Spring框架中使用ehcache。我正在使用ehcache.xml初始化ehcache。然而,我想在运行时添加某些属性,如terracottaconfig。为此,我覆盖了类EhCacheManagerFactoryBean。目前,我正在覆盖这个类的方法getObject()(我不知道这是否是一个正确的覆盖,因为在使用ehcache.xml文件初始化类之前,调用了其他方法setResourc
我使用Spring初始值设定项创建了一个新的Spring Boot项目。我正在构建一个内部部署后端,所以我试图实现的是,当用户打开jar可执行文件并启动服务器时,他应该能够通过在他的web浏览器中转到localhost:8080/来配置数据库连接。基本上是索引。html将有一个包含IP地址、数据库名称、用户名和密码4个字段的表单。提交表单后,spring将尝试使用提供的信息连接到数据库。 我拥有所
我正在使用Spring云流和Kafka绑定器使用SASL连接到Kafka集群。SASL配置如下所示: 我想以编程方式/在运行时更新用户名和密码,如何在Spring Cloud Stream中使用Spring Kafka binders做到这一点? 旁注:使用BinderFactory,我可以在其hashmap中看到这些配置,但我想知道如何在运行时更新配置,以便这些更改也反映在连接中?
问题内容: 作为Java开发人员,我经常需要在接口的不同实现之间进行选择。有时, 一次 只能进行 一次 选择,而另一些时候,我需要不同的实现来响应程序收到的不同输入。换句话说,我需要能够在运行时 更改 实现。这可以通过一个帮助器对象轻松实现,该对象将一些键(基于用户输入)转换为对适当接口实现的引用。 使用Spring,我可以将这样的对象设计为Bean,然后将其注入到需要的地方: 现在,我应该如何实
问题内容: 我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。为此,我遇到了Spring框架下提供的@Scheduled注释。但是我不确定如何在运行时更改fixedDelay的值。我进行了一些谷歌搜索,但没有发现任何有用的信息。 问题答案: 在spring启动中,你可以直接使用应用程序属性! 例如: 请注意,如果未定义属性,你还可以具有默认值,例如,默认值为“ 60”(秒)