spring source dm server specific 有什么区别?进口捆绑和 OSGi 的 需求捆绑 ?
我很困惑是否在我的项目中使用 Import-Bundle 或 Require-Bundle。
最佳答案
Import-Bundle 与 Require-Bundle 类似,它创建对另一个包的完整依赖项,包括该包的依赖项。这种传递性很糟糕,因为您不知道自己依赖什么,从而产生了我们在面向对象编程中非常熟悉的臭名昭著的“big ball of mud”问题。
在 OO 中,我们通过使用接口(interface)找到了解决这种纠缠的方法,它们将实现与规范分开。 OSGi 是围绕类似的构建,尽管它具有更高阶的服务契约(Contract)概念。这些契约(接口(interface)、权限、助手类)存储在一个包中。在基于契约(Contract)的编程中,您依赖于契约(Contract),而不是实现。 Ergo,一个 OSGi 包应该依赖于包,因为它们代表了合约。
Import-Package <=> interface
Import-Bundle/Require-Bundle <=> implementation class
Import-Bundle 不是 OSGi,它是专有的 Spring 扩展。它是 Require-Bundle 的一种更简洁的形式;不洁是支持某些 Eclipse 用例所必需的。 OSGi 决定不采用此 header ,因为如果您想从组件构建系统,Require-Bundle/Import-Bundle 从根本上被破坏了。
关于osgi - "Import-Bundle"和 "Require-Bundle"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11559980/