![](/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.