23

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

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

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

4

4 回答 4

12

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

实施方面,有两个项目正在开发中(它们都与容器无关且未正式发布)。Spring DM 2.0 将提供一个实现(2.0.0.M1 已经包含一个工作实现)以及 Apache 作为其 geronimo 项目(幻灯片)的一部分。

于 2009-10-19T08:21:23.897 回答
3

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

蓝图在我看来是 OSGi 规范中包含 Spring DM 的政治内容。

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

于 2010-09-02T15:31:10.437 回答
1

如果您以前使用过 Spring,那么蓝图服务使用起来会更加熟悉。声明式服务没有那么强大,但在 OSGi 容器中被广泛采用。

于 2011-03-10T22:10:23.697 回答
0

另一个问题是蓝图服务——据我所知——都存在于一个容器中,即蓝图容器——而声明性服务在引用它们的包中可用。特别是使用 Equinox,这会导致不同的行为。当您想要遵守 Equinox 提倡的严格的类加载方法时,应该在蓝图上使用 DS。

于 2013-04-17T13:25:50.947 回答