Apache camel 通过注释在Karaf上引用声明性服务
我无法正确引用带有@reference注释的服务接口Apache camel 通过注释在Karaf上引用声明性服务,apache-camel,osgi,apache-karaf,declarative-services,Apache Camel,Osgi,Apache Karaf,Declarative Services,我无法正确引用带有@reference注释的服务接口 public class TestServiceProcessor implements Processor { @Reference private TestService testService; 该服务已在Karaf实例上启动并运行,我可以使用blueprint文件引用它,该文件工作正常 <bean id="translateOIDs" class="com.test.TestServiceProcessor"&g
public class TestServiceProcessor implements Processor {
@Reference
private TestService testService;
该服务已在Karaf实例上启动并运行,我可以使用blueprint文件引用它,该文件工作正常
<bean id="translateOIDs"
class="com.test.TestServiceProcessor">
<property name="TestService" ref="testservice" />
</bean>
<reference id="testservice"
interface="com.test.TestService"/>
该服务已使用OSGI组件注释设置
我已经在Karaf上安装了scr功能和camel scr。
我试着使用场地策略和活动策略
我是否需要进一步配置Karaf实例,或者我是否以错误的方式使用@Reference注释?首先,您需要安装scr功能以启用声明性服务。我猜你的意思是“src”特性 除此之外,@Reference仅适用于DS组件。所以您的类TestServiceProcessor必须用@Component注释。。。但它不能用于蓝图。DS和blueprint是互斥的 相反,您可以做的是利用
在这种情况下,您需要用@Named注释bean类,并用@inject进行注入。然后,您还可以通过使用@Named(“yourid”)设置的id从常规blueprint上下文引用带注释的bean。首先,您需要安装scr功能以启用声明性服务。我猜你的意思是“src”特性 除此之外,@Reference仅适用于DS组件。所以您的类TestServiceProcessor必须用@Component注释。。。但它不能用于蓝图。DS和blueprint是互斥的 相反,您可以做的是利用 在这种情况下,您需要用@Named注释bean类,并用@inject进行注入。然后,还可以通过id从常规blueprint上下文引用带注释的bean,可以使用@Named(“yourid”)设置id