![](/img/trans.png)
[英]How to let a user select a database at runtime for Spring-data-JPA
[英]How to switch database dynamically at runtime with Spring Data JPA ORM
我想在运行时使用Java,Spring和Spring JPA创建具有多个数据库的应用程序。
实际上,我正在使用以下流程创建多租户应用程序:
1-一个应用程序可能是php:从网站用户将创建帐户,系统将运行该过程并创建数据库和相应的配置。
2-现在将加载主要应用程序(Java + Spring JPA,Spring REST),开始指向包含用户和其他填充数据的新创建的数据库,该数据库可能基于租户ID或其他指向标记。
进一步计划增加第三点; 3- oAuth2也具有安全性。 因此配置应相应。
现在的问题是,如何在Spring Data JPA应用程序中实现此目标并在运行时切换数据库配置?
您可以在Spring中预先配置多个数据源,并在不同的程序包结构中隔离关联的存储库(不是真正的交换机,而是从同一个Spring Boot应用程序访问多个数据源)
spring.datasource.url = ...
....
second.datasource.url=
second.datasource.username=
second.datasource.password=
second.datasource.driver-class-name=
创建一个新的配置以从隔离的软件包中扫描存储库,然后加载配置属性以构建第二个数据源。
@EnableJpaRepositories(
basePackages = { "<package containing repo from second database>" }
)
public class SecondDBConfig {
@Bean(name = "secondDataSource")
@ConfigurationProperties(prefix = "second.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
..创建交易管理器和实体管理工厂
最后,访问连接到不同数据库的存储库。
在这里查看完整的示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.