1

我的 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:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我究竟做错了什么?

谢谢。

4

1 回答 1

2

不要在您尝试注入客户端的类中使用@Autowired,而是使用@Resource。因为@Autowired 和@Inject

1) 按类型匹配 2) 按限定符限制 3) 按名称匹配

和@Resource

1) 按名称匹配 2) 按类型匹配 3) 按限定符限制(如果按名称找到匹配则忽略)

在您的情况下,您使用代理,因此类类型不是您想要的。使用@Resource,您可以从按名称查找开始。

于 2013-11-20T04:16:27.033 回答