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