gpt4 book ai didi

osgi - "Import-Bundle"和 "Require-Bundle"有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:30:31 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com