2017-06-15 79 views
0

我打算在多租戶應用程序上工作,現在我只是看網上的不同實現,以瞭解實現此類任務所需的要求。 Hibernate + Spring引導是我打算使用的技術。多租戶與春季啓動

從我的閱讀中,所有不同的教程都使用相同的方法,即在配置文件中聲明數據源,以便會話工廠在啓動應用程序時啓動,但我真的想要更高級別的應用程序,我可以在其中動態添加租戶並輸入其數據源信息。 這樣,應用程序就可以獲取新租戶的信息,而無需觸摸配置文件並重新啓動應用程序。

我想過有一個單獨的數據庫,我可以存儲我的租戶數據源證書或類似的東西。你能否給我另一種方法來解決這個需求,或者我可以參考的現有實現的鏈接。

謝謝

回答

1

我在過去有類似的要求。

我實現了DataSource代理類。該類具有租戶解析器和簡單數據源的映射。我們需要一個DataSource的所有地方都使用代理。

在任何方法調用例如getConnection()會解析租戶,檢查地圖是否包含已創建的DataSource(如果沒有爲租戶創建新的DataSource並存儲在數據庫中)。然後調用映射中真實數據源的相同方法。

租戶解析器是基於ThreadLocal的,其中租戶值存儲在過濾器(從請求頭獲得租戶)並在DataSource代理中使用。

1

你需要做的是通過AbstractRoutingDataSource使用Spring Framweork的動態數據源路由。 This answer爲您解釋所有問題。

1

在我question。我實現了MultiTenantConnectionProviderCurrentTenantIdentifierResolver。而使用DataSourceLookup選擇數據源通過tenant.This links對我很有用處。