7

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

我想让我的应用程序的多个版本在线,每个版本都有不同的行为和启用或禁用的不同类。

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

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

我一般对spring框架没有很好的了解,我使用它与db相关,就是这样。red5 更广泛地使用它。

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

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

4

1 回答 1

4

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

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

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

于 2012-07-30T16:11:01.490 回答