微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – OSGi服务跟踪器和声明服务之间有什么不同?

我现在正在处理Osgi服务,我有一个关于在Osgi中使用服务的问题.有一些不同的注册用户服务方式.有人可以解释Osgi服务跟踪器和声明服务之间的区别吗?哪一个更好?

解决方法

在Osgi中,ServiceTracker是获取对服务引用的一种编程方式.即编写ServiceTracker代码,“跟踪”对另一个服务的引用,让我们在可用时使用它.

相比之下,Declarative Services(DS)允许您声明注入到组件中的依赖项. DS就是依赖注入的一种形式.服务之间的依赖关系图及其启动顺序将决定您的服务何时开始. DS定义中的基数属性允许您声明关系是否为强制性(1..1),具有至少一个(1..n),可选(0..1)或多个可选(0..n) ).
当您声明强制性关系时,您的服务将不会启动,直到所有依赖关系满足为止.
当您声明可选关系时,无论依赖关系的状态如何,您的服务都将启动,但您需要注意代码中对服务的引用可能为null.

从实践的角度来看,ServiceTracker是编写和维护的大量样板代码.考虑到Osgi服务的动态性质,Osgi规范允许许多状态需要考虑.DS会给你一个干净的方式来声明和维护你的依赖.明确的依赖关系将有助于您保持运行时环境的一致性.

原文地址:https://www.jb51.cc/java/124921.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐