@Service用于在CQ中创建服务然后使用BundleContext.registerService方法是什么?

时间:2017-04-24 09:07:03

标签: osgi cq5 aem osgi-bundle

BundleContext中的ComponentContext有多大不同,因为我在两者中都看到了getServiceReference方法

2 个答案:

答案 0 :(得分:2)

ComponentContext由声明性服务规范定义,并且可以与DS组件一起使用。它的目的不是提供Bundle Context的所有功能。

如果你需要BundleContext,你只需从ComponentContext中获取它,或者甚至将它作为参数注入你的@Activate方法。

答案 1 :(得分:0)

registerService()和@Service注释都允许您创建OSGi服务。区别在于BundleContext.registerService()使用普通的OSGi API,而@Service注释依赖于OSGi声明服务。

当您使用声明性服务时,将为您管理服务的整个生命周期,如果您手动注册服务,则需要自己执行此操作。

最后,这两种机制都为您提供了创建OSGi服务的方法。一个更简单,另一个更强大。

相关问题