簡體   English   中英

多租戶與春季啟動

[英]Multi tenancy with Spring boot

我打算在多租戶應用程序上工作,現在我只是在Web上查看不同的實現,以了解實現此類任務所需的要求。 Hibernate + Spring啟動是我計划使用的技術。

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

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

謝謝

我過去也有類似的要求。

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

在任何方法調用例如getConnection()它解析租戶,檢查映射是否包含已創建的DataSource(如果沒有為租戶創建新的DataSource並存儲在DB中)。 然后調用來自地圖的相同的真實DataSource方法。

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

您需要做的是通過AbstractRoutingDataSource使用Spring Framweork的動態數據源路由。 這個答案為您解釋了一切。

在我的問題中 。我實現了MultiTenantConnectionProviderCurrentTenantIdentifierResolver 。並使用DataSourceLookup來按租戶選擇數據源。這個鏈接對我有幫助。

這是一個完整的工作示例,我使用Spring Boot 2,Spring JPA(Hibernate),在MySQL上運行的Spring Security 5構建的數據庫/租戶多租戶應用程序。

我已經解釋了它是如何工作的並且也分享了整個代碼。

看看這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM