![]() |
1
48
我相信
JavaScript类比:这类似于检测Web浏览器是否支持某个API,而不是从用户代理字符串中推断出它是哪种浏览器。 OSGi联盟的Peter Kriens在 OSGi blog .
可能是唯一需要使用的情况
|
![]() |
2
14
赞成进口包装而不是要求捆绑包装。 需要捆绑:
进口包装:
|
![]() |
3
5
我相信进口包装给你更松的耦合,应该是首选。我在声明对我不拥有的包(如SLF4J)的依赖性时使用它,并且我可以根据自己的意愿交换实现。当依赖关系是我可以控制的东西时,我使用RequireBundle,例如我自己的bundle,因为任何重要的更改都会经过我自己。 |
![]() |
4
0
避免导入包。 由于包在包之间提供多对多的关系,因此它们容易出现难以检测和避免的依赖循环。 另一方面,需要bundle,引用单个bundle,通过简单的构建时检查使依赖关系图免受周期的影响。 使用RequireBundle,使用独立的较低抽象级别构建分层架构要容易得多。 |
![]() |
5
0
但是…
有实际的理由使用
Eclipse不使用包作为分辨率单位。它使用捆绑包。也就是说,如果您使用一个包中的一个包,那么Eclipse会编译您的包,而不会报告其他未从该包中导入的包的使用有任何问题。 你可以(你是人类)认为一切正常,上传你的包进行部署,但是…您的包将在运行时中断。 我很肯定,因为这个问题(对我)已经发生了!今天。 好的解决方案是更改Eclipse类路径容器,但是…如果不这样做…您可以决定避免这种需要捆绑包而不是包的问题,并支付所提到的价格(捆绑包之间没有向后兼容的代码移动)。 |
![]() |
6
-1
我不相信使用导入包更好,因为我在处理包时的默认期望是使用相关的公共API。因此,需要捆绑包更有意义。 |
![]() |
Martin · 如何在上下文中动态添加/删除servlet? 7 年前 |
![]() |
mike · 在OSGi参考注释中动态设置目标属性 7 年前 |
![]() |
Sandy · 驼峰REST DSL-地址已在使用:绑定异常 7 年前 |