我无法正确引用带有@Reference注释的服务接口。
public class TestServiceProcessor implements Processor {
@Reference
private TestService testService;
该服务已在Karaf实例上启动并运行,我可以使用运行良好的蓝图文件对其进行引用。
<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 Annotation?
答案 0 :(得分:2)
首先,您需要安装scr功能以启用声明性服务。我猜你是说这是“ src”功能。
除此@Reference之外,仅在DS组件中有效。因此,您必须在类TestServiceProcessor上使用@Component进行批注...,但是不能在蓝图中使用它。 DS和蓝图是互斥的。
您可以做的是利用http://aries.apache.org/modules/blueprint-maven-plugin.html。
在这种情况下,您需要使用@Named注释bean类,并使用@Inject进行注入。然后,您还可以通过可使用@Named(“ yourid”)设置的ID从常规蓝图上下文中引用带注释的Bean。