OSGi:蓝图会取代声明式服务吗?

2022-09-01 23:45:59

OSGi 的新 R4.2 规范描述了蓝图服务,用于依赖关系注入和服务布线。

蓝图是否取代了声明式服务(它仍然是规范的一部分),或者它们是否打算协同工作?

蓝图是否已经可用于流行的实现(Felix和Equinox)?


答案 1

我问自己同样的问题,在与参与该主题的其他人讨论这个问题时,主旨是,尽管两者在某种程度上是重叠的,但何时使用的用例却大不相同。DS 是一种轻量级解决方案,可避免激活器并以声明方式对服务依赖关系进行建模。BP基本上是一个针对企业部署的DI容器。对于不熟悉OSGi动态特性的“常规”Java开发人员来说,这种情况也更常见(隐藏在代理后面很多)。

在实现方面,有两个项目正在研究它(所有这些都是容器不可知的,没有正式发布)。Spring DM 2.0将提供一个实现(2.0.0.M1已经包含一个工作实现)以及Apache作为其geronimo项目(幻灯片)的一部分。


答案 2

根据我在基于Felix的环境中的经验,DS是唯一一个成熟的依赖注入器,它提供了与OSGi Compendium规范的其他部分(如ConfigAdmin)的一致性。

在我看来,蓝图似乎是Spring DM在OSGi规范中的政治包容性。

iPojo是一种基于Java注释而不是XML描述符的替代方法,它隐藏了OSGi基础的某些部分。


推荐