Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OSGi和依赖注入之间的关系是什么_Java_Dependency Injection_Osgi - Fatal编程技术网

Java OSGi和依赖注入之间的关系是什么

Java OSGi和依赖注入之间的关系是什么,java,dependency-injection,osgi,Java,Dependency Injection,Osgi,他们彼此有什么不同 规范和实现 竞争对手 无关的 它们是不相关的 编辑: DI首先由描述,由指定 DI可以用于不同于Java的语言,OSGi是Java特有的 OSGi试图解决版本化组件的问题,DI是旧服务定位器模式的替代方案 它们在概念上是相关的,因为它们都提供了“关注点分离”机制 OSGI是在模块级实现这一点的——想想Eclipse体系结构,它有多个插件,每个插件负责特定的关注点/特性 DI是面向对象的——它提供了用连接在一起的多个对象构建应用程序的方法,每个对象负责其特定的功能 在技术上

他们彼此有什么不同

  • 规范和实现
  • 竞争对手
  • 无关的
它们是不相关的

编辑:

DI首先由描述,由指定

  • DI可以用于不同于Java的语言,OSGi是Java特有的
  • OSGi试图解决版本化组件的问题,DI是旧服务定位器模式的替代方案

它们在概念上是相关的,因为它们都提供了“关注点分离”机制

OSGI是在模块级实现这一点的——想想Eclipse体系结构,它有多个插件,每个插件负责特定的关注点/特性

DI是面向对象的——它提供了用连接在一起的多个对象构建应用程序的方法,每个对象负责其特定的功能

在技术上,它们是不同的。OSGI是一个具有多个实现的规范。
DI过去是一种具有多种实现和API的设计模式。然而,JCP最近做了一些工作,试图标准化DI API()

OSGi规范由两部分组成:核心部分和概要部分

核心部分是Java模块系统的规范。因此,核心规范与DI的概念没有关系

另一方面,概要部分指定了OSGi容器可以提供的一系列服务。 在这些服务中,您可以找到“声明性服务规范”(OSGi简编服务,第112章),这是将熟悉的DI概念引入OSGi的第一次尝试。 想法很简单:由于OSGi允许开发人员实现、定义和注册服务,声明性服务规范使开发人员能够定义依赖于一系列其他底层服务的服务。在OSGi中,这是一个特别有趣(也是非常困难)的问题,因为根据定义,服务是不可靠的,它们可以出现也可以消失

除了声明性服务规范之外,至少还有另外两种流行的解决方案试图在OSGi中提供更强大的DI框架:

  • ,是OSGi框架的扩展
  • 的OSGi扩展
值得注意的是,即将发布的OSGi规范R4.2版本将包含一个名为Blueprint Services的新概要规范,该规范将为基于Spring DM框架的OSGi提供一个完整的DI解决方案(Spring团队为这一新规范做出了重大贡献)