创建可重用的模块

ufk*_*ufk 7 java spring module red5

我正在为网络编写一个很大的Red5 Java应用程序.Red5是基于Java的Flash Media Server替代方案,使用spring框架编写.

我想在线申请我的应用程序的许多版本,每个版本都有不同的行为,不同的类启用或禁用.

我正在寻找一种方法将我的代码转换为基于模块的代码,这将允许我从主应用程序中删除/添加模块/功能.

我知道OSGI http://www.springsource.org/osgi,但它说它需要一个SpringSource dm服务器,我不知道它将如何在red5中一起工作,而且完全理解它似乎非常复杂.

我一般都不太了解spring框架,我使用它与db相关,就是这样.red5更广泛地使用它.

所以任何人都可以从这些信息中获得任何意义吗?有什么可以把我的代码分成模块吗?

任何有关该问题的信息将不胜感激.

Vic*_*ith 4

我处理这种情况的首选方法是依赖注入(DI)。Spring内置了DI功能,在网上很容易找到相关教程。然而,由于多种原因,Spring 的 DI 不如Guice提供的那么好,我强烈推荐 Guice 。(我认为 Guice 相对于 Spring DI 的主要优点是类型安全。)

DI 基本上是一种在运行时替换类实现的机制。不是将依赖项硬编码到类中(例如,通过让一个类直接构造其他类),而是对它们进行编码,使其依赖类在其构造函数中传递给它们。然后,DI 框架将根据配置在运行时传递正确的实例。Spring 配置可以通过注释或 XML 文件完成,Guice 使用com.google.inject.AbstractModule.

因此,您可以为应用程序的不同实例使用不同的配置文件,并让它们提供不同的激活功能集,或者实际上是同一功能的不同实现。如果您将应用程序设置为使用此技术,那么实例之间唯一需要不同的是单个配置文件。