我对 Blueprint 和 Spring DM 有点困惑:
从我认为是真的:
- Spring DM 是 Spring Source 定义的框架
- Blueprint 是 OSGi 联盟定义的框架
- Blueprint 从 Spring DM 中“汲取”了许多想法
不?
我们能否期望这两个框架在未来合而为一(合并)?如果没有,哪一个将是最有未来感的?
OSGi 4.2 引入了基于 Spring DM (2.x) 是参考实现 (RI) 的 Spring Dynamic Modules 项目的蓝图服务规范。
简而言之:Blueprint 是一个规范,Spring DM 是 Blueprint API 的一个实现
Blueprint 是在 SpringSource/Interface21 的领导下在 OSGi 联盟中开发的。
但是,如果您正在寻找一种利用 OSGi 的方法,请使用带有注释的包(服务)之间的声明式服务 (DS) 。根据我的经验,当您制作小的内聚包时,您并不真的需要连接 XML。DS 在处理服务方面比 Blueprint/Spring DM 好得多,因为它们倾向于“隐藏”动态性,而 DS 只是让它变得微不足道。
我的理解是SpringDM 是一个死项目。检查 GA 和发布日期。因此,尽管它最终对规范的开发做出了很大贡献,但它对类加载器的处理方式很糟糕。 Apache-Aries是一个强大的蓝图实现。请注意,使用蓝图并不排除使用弹簧。我建议将Karaf作为一个健壮的平台,可以使用Eclipse Equinox或Apache Felix对于 OSGI 引擎。如果您在应用程序级别进行开发,您的服务可能被企业内的其他团队或组织使用,或者被您的客户扩展,我喜欢 blueprint 与 DS。我认为蓝图也更适合传统的企业计算环境。但根据您的特定目标环境,DS 或Ipojo可能更合适。
除了 Dmytro Pishchukhin 的回答之外,应该指出 Spring DM 项目在某种程度上是一个死项目,因为 DM 2 从未达到“发布”版本。
相反,它被贡献给了 Eclipse 基金会,在那里它变成了Gemini Blueprint 项目。
在 Gemini Blueprint 文档的介绍中,他们清楚地解释了区别: http: //www.eclipse.org/gemini/blueprint/documentation/reference/1.0.2.RELEASE/html/index.html
我在这里复制:
第 1 章 Spring 动态模块成为 Eclipse Gemini 蓝图
2009 年底,作为 Gemini 项目提案的成员,SpringSource 向 Eclipse 基金会贡献了 Spring Dynamic Modules(也称为 Spring OSGi)项目。Spring DM v2 代码库连同其问题跟踪器和论坛已移至 Eclipse.org。该项目在 Apache 许可和 EPL 下获得双重许可。
虽然名称已更改,但代码及其功能保持不变。如迁移指南中所述,现有 Spring DM 应用程序可以轻松迁移到 Eclipse Gemini Blueprint。