我有多個基於客戶ID分片的MySQL數據庫。有一個微服務提供關於分片信息的細節(哪個客戶id屬於哪個db等)。Spring - 休眠 - 動態配置多個數據庫
到目前爲止,我的代碼以單一數據源的工作,我提供了一個SessionFactory的Hibernate配置文件的一部分功能:
@Bean
public DataSource dataSource() {
}
我:
@Bean
public LocalSessionFactoryBean sessionFactory() {
// set data source here
}
數據源是由歸國am自動裝配DAO中的sessionFactory:
@Autowired
private SessionFactory sessionFactory;
現在,使用多個d atasource,我需要:
- 讀取配置的數據庫,從微服務
- 使用DB的列表來創建數據源動態
- SessionFactory的,應根據顧客的ID動態裝箱。
我不確定如何自動裝配sessionFactory,以便根據客戶ID初始化數據源。
這裏的任何幫助真的很感激。
什麼是動態的。 Spring在應用程序啓動時配置bean,所以不能注入第二個數據源。如果您指定其他彈簧作用域,則動態創建SessionFactory將無法很好地擴展。這些對象必須在啓動時創建。 –
您可以使用限定符配置單獨的bean,並且其中一個可以是主要的,您在第一次請求時需要它。 –
有關數據庫的信息不是靜態的。該信息由另一個微服務提供,該服務列出了所有已配置的分片數據庫。可以在管理它的微服務處添加或刪除數據庫。 說,如果我需要添加一個新的客戶ID,對應於該ID的所有數據將被添加爲一個單獨的數據庫實例,然後微服務將返回一個數組與新添加的數據庫。 – agarwalankur85