BundleContext中的ComponentContext有多大不同,因为我在两者中都看到了getServiceReference方法
答案 0 :(得分:2)
ComponentContext由声明性服务规范定义,并且可以与DS组件一起使用。它的目的不是提供Bundle Context的所有功能。
如果你需要BundleContext,你只需从ComponentContext中获取它,或者甚至将它作为参数注入你的@Activate方法。
答案 1 :(得分:0)
registerService()和@Service注释都允许您创建OSGi服务。区别在于BundleContext.registerService()使用普通的OSGi API,而@Service注释依赖于OSGi声明服务。
当您使用声明性服务时,将为您管理服务的整个生命周期,如果您手动注册服务,则需要自己执行此操作。
最后,这两种机制都为您提供了创建OSGi服务的方法。一个更简单,另一个更强大。