簡體   English   中英

如何在同一應用程序中使用不同版本的 class?

[英]How to use different versions of a class in the same application?

我目前正在開發一個 Java 應用程序,它應該能夠同時使用不同版本的 class(因為支持多租戶)。 我想知道,有什么好的方法來管理這個嗎? 我的基本方法是擁有一個接口,比如說 Car,並實現不同的版本,如 CarV1、CarV2 等。 每個版本都有自己的 class。

我認為我的方法有點古怪。 但是我沒有找到任何關於這個主題的文獻,但我實際上不知道我應該搜索什么。

接口的想法是謹慎的。 將它與可以根據某些外部輸入(例如租戶 ID)生成所需實現實例的工廠相結合。 如果您不需要在應用程序的同一運行實例中支持多個租戶,您還可以使用 JDK 中的ServiceLocator之類的東西,它允許使用基於文件的配置方法。

如果您在應用程序服務器中運行,請考慮啟動多個實例,每個實例都為不同的客戶端配置。 然后服務器將負責實例的分離,就好了。

否則,如果您真的認為在非 Java EE 應用程序中同時(在運行時)需要多個實現,這是一個棘手的問題。 也許您想考慮看看 OSGi 容器,它提供了具有多個版本的 class 的功能。 但是,如果您還不熟悉這種方法,則會增加相當大的復雜性。

理論上,您可以使用多個 class 加載器(例如 JBoss)來處理此問題。

但是:我強烈建議不要自己實施。 這是一個相當復雜的事情,很容易出錯。 如果您談論的是 web 應用程序,則可以改為為每個租戶創建一個 web 應用程序實例。 如果您正在開發一個獨立的應用程序,您應該檢查每個租戶運行一個實例是否可行。

暫無
暫無

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

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