OSGI新手入门。
我在OSGI中使用了spring-boot。在bundle activator中,spring-boot应用程序成功启动。我有一个组件类,如下所示
@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组件吗?
发布于 2019-04-10 18:12:43
让一个类同时成为这两个类是没有意义的。spring boot和声明性服务的生命周期是完全分开的。因此,在最好的情况下,您最终会得到该类的两个实例-一个由spring boot填充,另一个由声明性服务填充-但它更有可能不起作用。
我建议你决定是否要去OSGi。如果是,则直接使用声明性服务,而不是spring boot。一般情况下,决定使用一个注入框架。在OSGi中,您可以捆绑一个注入框架,但它们必须与OSGi兼容。Spring boot并不是真正兼容OSGi。
https://stackoverflow.com/questions/55608281
复制相似问题