2012-07-26 94 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