gpt4 book ai didi

annotations - 通过 org.osgi.service.component 注解抽象组件

转载 作者:行者123 更新时间:2023-12-04 14:40:47 24 4
gpt4 key购买 nike

我正在从 org.apache.felix.scr 迁移对 org.osgi.service.component 的注释注释。我有一组从通用抽象类继承的组件。在 felix 案例中,我可以使用 @Component带有选项 componentAbstract=true 的注释在父类(super class)上,然后使用 @Reference父类(super class)中的注解。我找不到如何将其迁移到 osgi 注释。

是否可以在组件的父类(super class)中使用组件注释?如果是这样,那么处理属性和元类型生成的适当方法是什么?

所以,我正在寻找的是这样的

/* No component definition should be generated for the parent, as it is
abstract and cannot be instantiated */
@Component(property="parent.property=parentValue")
public abstract class Parent {
@Reference
protected Service aService;

protected activate(Map<String,Object> props) {
System.out.println("I have my parent property: "+props.get("parent.property"));

@Override
public abstract void doSomething();
}

/* For this class, the proper Component definition should be generated, also
including the information coming from the annotations in the parent */
@Component(property="child.property=childValue")
public class Child extends Parent {

@Activate
public activate(Map<String,Object> props) {
super.activate(props);
System.out.println("I have my child property: "+props.get("child.property"));
}

public void doSomething() {
aService.doSomething();
}
}

最佳答案

默认情况下,BND 不会处理父类中的 DS 注释。你可以用 -dsannotations-options: inherit 改变它但请参阅 http://enroute.osgi.org/faq/ds-inheritance.html为什么你不应该!

2021-02-23 更新:上面提到的页面似乎不再可用。我不知道它是移到别处还是干脆删除了,但它的内容(以 Markdown 格式)仍然可以在 GitHub 上找到:https://github.com/osgi/osgi.enroute.site/blob/pre-R7/_faq/ds-inheritance.md

关于annotations - 通过 org.osgi.service.component 注解抽象组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com