我正在为网络编写一个很大的Red5 Java应用程序。 Red5是基于Java的Flash Media Server替代方案,使用spring框架编写。
我想在线申请多个版本的应用程序,每个版本都有不同的行为,不同的类启用或禁用。
我正在寻找一种方法将我的代码转换为基于模块的代码,这样我就可以从主应用程序中删除/添加模块/功能。
我知道OSGI http://www.springsource.org/osgi但是它说它需要一个SpringSource dm服务器而我不知道它将如何在red5中一起工作,而且完全理解它似乎非常复杂。
我对spring框架一般都不太了解,我使用它与db相关,就是这样。 red5更广泛地使用它。
所以任何人都可以从这些信息中获得任何意义吗?有什么东西可以把我的代码分成模块吗?
非常感谢有关该问题的任何信息。
答案 0 :(得分:4)
我处理这种情况的首选方法是依赖注射(DI)。 Spring内置了DI功能,教程很容易find online。但是,由于很多原因,Spring的DI不如Guice提供的那么好,我强烈推荐。 (在我看来,Guice优于Spring的主要优势是类型安全。)
DI基本上是一种在运行时替换类实现的机制。而不是硬代码依赖于类(通过让类直接构造其他类),您可以对它们进行编码,以使其依赖类在其构造函数中传递给它们。然后,DI框架将根据配置在运行时传递正确的实例。 Spring配置可以通过注释或XML文件完成,Guice使用com.google.inject.AbstractModule
的子类。
因此,您可以为应用程序的不同实例使用不同的配置文件,并让它们为激活提供不同的功能集,或者实际上是同一功能的不同实现。如果您将应用程序设置为使用此技术,则实例之间唯一需要不同的是单个配置文件。