java - 创建可重用模块

标签 java spring module red5

我正在为网络编写一个大型 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/

相关文章:

java - 外部部署war的springboot配置文件

rust - 如何导出同名的函数和宏?

java - 使用 objectify 存储和加载实体会返回不同的结果

java - 声明字符串数组的区别

java - 使用函数的结果作为新函数的参数,但为什么会出现异常?

spring - spring.profiles.active=product 与 spring.profiles.active=local 之间有什么区别

java - 如何关闭 Windows 7 上的 headless (headless)图形环境

java - 使用 Tomcat 在 Eclipse 中启动 Spring MVC webapp 时出现问题,IllegalArgumentException

css - Prestashop 1.6.1.4 - 将 CSS 添加到模块的 CMS 页面

javascript - 使用 JavaScript 添加 onclick 并使用模块模式显示/隐藏 div