无法自动装配jaxrs客户端

时间:2013-03-25 12:19:49

标签: spring cxf jax-rs autowired

我在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)}

我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

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

1)按类型匹配 2)按资格赛限制 3)按名称匹配

和@Resource

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

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