我在applicationContext.xml中有这个(我正在使用http://cxf.apache.org/jaxrs)
<context:annotation-config />
<context:component-scan base-package="br.com.test" />
<bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
<jaxrs:client id="testClient"
serviceClass="br.com.test.ws.InterfaceServiceTest"
address="http://localhost:8080/ocs-teste-ws-web/services/myservice">
<jaxrs:providers>
<ref bean="jsonProvider" />
</jaxrs:providers>
</jaxrs:client>
我在这个项目中包含带接口的jar但是我得到以下异常:
1318 [localhost-startStop-2]错误org.springframework.web.context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建名为'someBeanImpl'的bean时出错:注入自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:br.com.test.ws.InterfaceServiceTest br.com.test.impl.SomeBeanImpl.interfaceServiceTest;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型[br.com.test.ws.InterfaceServiceTest]匹配的依赖关系bean:期望至少有一个bean可以作为此依赖关系的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}
我做错了什么?
感谢。
答案 0 :(得分:2)
不要使用@Autowired,而是在尝试注入客户端的类中使用@Resource。 因为@Autowired和@Inject
1)按类型匹配 2)按资格赛限制 3)按名称匹配
和@Resource
1)按名称匹配 2)按类型匹配 3)按限定符限制(如果按名称找到匹配则忽略)
在您的情况下,您使用代理,因此类类型不是您想要的。使用@Resource,您可以按名称查找。