首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捆绑包激活后未激活OSGI组件

捆绑包激活后未激活OSGI组件
EN

Stack Overflow用户
提问于 2019-04-10 16:43:28
回答 1查看 168关注 0票数 0

OSGI新手入门。

我在OSGI中使用了spring-boot。在bundle activator中,spring-boot应用程序成功启动。我有一个组件类,如下所示

代码语言:javascript
复制
@Service // spring-boot annotation
@Component(immediate = true) // osgi annotation
public class Test {
    @Activate
    public void activate() {
        System.out.println("osgi component activated");
    }

    @Reference
    public void set(ServiceComponentXXX a) {
        System.out.println("reference got");
}

类测试只绑定服务,而不绑定任何其他服务。类ServiceComponnetXXX来自其他捆绑包。activate和set方法从不执行。

在删除spring-boot注解@Service之后,代码可以正常工作。所以问题是,一个类可以既是spring-boot组件又是OSGI组件吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-10 18:12:43

让一个类同时成为这两个类是没有意义的。spring boot和声明性服务的生命周期是完全分开的。因此,在最好的情况下,您最终会得到该类的两个实例-一个由spring boot填充,另一个由声明性服务填充-但它更有可能不起作用。

我建议你决定是否要去OSGi。如果是,则直接使用声明性服务,而不是spring boot。一般情况下,决定使用一个注入框架。在OSGi中,您可以捆绑一个注入框架,但它们必须与OSGi兼容。Spring boot并不是真正兼容OSGi。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55608281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档