2013-03-25 5 views
1

У меня есть это в моем applicationContext.xml (я использую http://cxf.apache.org/jaxrs)Не удалось autowire 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> 

Я в том числе банку с интерфейсом в этом проекте, но я получаю следующее исключение:

1318 [localhost-startStop-2] ERROR org.springframework.web.context.ContextLoader - Ошибка инициализации контекста org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем someBeanImpl: отказ в автоуверенных зависимостях не удался; Вложенное исключение - org.springframework.beans.factory.BeanCreationException: Не удалось автополе field: br.com.test.ws.InterfaceServiceTest br.com.test.impl.SomeBeanImpl.interfaceServiceTest; Вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не найдено подходящего bean-типа типа [br.com.test.ws.InterfaceServiceTest] для зависимости: ожидается как минимум 1 компонент, который квалифицируется как кандидат autwire для этой зависимости. Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}

Что я делаю неправильно?

Спасибо.

+1

можете ли вы разместить код SomeBeanImpl? – JustDanyul

ответ

1

Не используйте @Autowired, используйте @Resource вместо этого в классе, в котором вы пытаетесь ввести ваш клиент. Поскольку @Autowired и @Inject

1) Соответствует по типу 2) Ограничивает по квалификаторами 3) Соответствует по имени

И @Resource

1) Соответствует по имени 2) Соответствует по типу 3) Ограничивает квалификаторы (игнорируется, если совпадение найдено по имени)

В вашем случае вы используете прокси-сервер, поэтому тип класса не то, что вы хотите. С помощью @Resource вы начинаете поиск по имени.

Смежные вопросы