2012-07-26 93 views
7

我正在爲Web編寫一個大的Red5 Java應用程序。 Red5是一個基於Java並且使用Spring框架編寫的Flash Media Server替代方案。創建可重用模塊

我想在線有很多版本的應用程序,每個版本都有不同的行爲和不同的類別啓用或禁用。

我正在尋找一種方法將我的代碼轉換爲基於模塊的代碼,這將允許我從主應用程序中刪除/添加模塊/功能。

我知道關於OSGI http://www.springsource.org/osgi,但它說它需要一個SpringSource dm服務器,我不知道它將如何在red5中一起工作,並且它完全理解似乎非常複雜。

我對Spring框架一般沒有很好的瞭解,我使用它與db相關,就是這樣。 red5更廣泛地使用它。

所以任何人都可以從這些信息做出任何意義?有什麼可以做我的代碼分爲模塊?

有關該問題的任何信息將不勝感激。

回答

4

我處理這種情況的首選方法是依賴注射(DI)。 Spring有內置的DI功能,爲此,教程很容易到find online。然而,由於許多原因,Spring的DI並不是很好,如我所強烈建議的Guice所提供的那樣。 (在我看來,Guice優於Spring的DI的主要優點是類型安全。)

DI基本上是一種在運行時替換類實現的機制。而不是將硬編碼依賴關係放入類中(例如,通過讓類直接構造其他類),您將它們編碼爲將它們的依賴類傳遞給它們的構造函數。 DI框架將根據配置在運行時傳遞正確的實例。 Spring配置可以通過註釋或XML文件完成,Guice使用com.google.inject.AbstractModule的子類。

因此,您可以針對應用程序的不同實例使用不同的配置文件,並讓它們爲激活提供不同的功能集,或者實際上提供相同功能的不同實現。如果您將應用程序設置爲使用此技術,那麼實例之間唯一需要區別的是單個配置文件。

+0

謝謝。看起來像一個很棒的選擇。 – ufk 2012-08-04 11:03:10