他们彼此是什么?
答案 0 :(得分:13)
OSGi规范由两个独立的部分组成:核心和纲要。
核心部分是Java模块系统的规范。因此,核心规范与DI的概念没有关系。
另一方面,纲要部分指定了OSGi容器可以提供的一系列服务。 在这些服务中,您将找到“声明服务规范”(OSGi Compendium Services,第112章),这是第一次将熟悉的DI概念引入OSGi。 这个想法很简单:由于OSGi允许开发人员实现,定义和注册服务,因此声明性服务规范为开发人员提供了定义依赖于一系列其他底层服务的服务的可能性。这在OSGi中是一个特别有趣(和困难)的问题,因为根据定义,服务是不可靠的,它们可以出现和消失。
除了声明服务规范之外,还有至少两种其他流行的解决方案试图在OSGi中提供更强大的DI框架:
值得注意的是,即将推出的OSGi规范的R4.2版本将包含一个名为Blueprint Services的新概要规范,它将为基于Spring DM框架的OSGi提供完整的DI解决方案(Spring团队对这个新规范)
答案 1 :(得分:10)
他们是无关的。
编辑:
DI a conecpt首先由Martin Fowler OSGi is a module system for Java that implements a complete and dynamic component model指定的OSGi Alliance进行描述。
答案 2 :(得分:9)
它们在概念上相关,因为它们都提供了“关注点分离”机制。
OSGI在模块级别上执行此操作 - 认为Eclipse架构具有多个插件,每个插件都负责特定的关注/功能。
DI面向对象级别 - 它提供了从连接在一起的多个对象构建应用程序的方法,每个对象负责其特定功能。
技术上他们是不同的。 OSGI是一个具有多个实现的规范。 DI曾经是具有多种实现和API的设计模式。最近在JCP中有一些工作试图标准化DI API(JSR 330)