Spring WebserviceTemplate не регистрируется

Я получаю сообщение об ошибке, и я не могу понять, для чего оно связано с Spring WebserviceTemplate.

вот определение класса: (Интересно, если я удалю аннотацию @Service, она будет работать нормально.)

@Service
public class PTSWebServicesClientStubImpl implements PTSWebServicesStub
{
    @Autowired
    @Qualifier("PTS")
    private WebServiceTemplate ptsWebServiceTemplate;
 .....//
 }

вот конфигурация xml:

<bean id="ptsWebServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
    <qualifier value="PTS" />
    <constructor-arg ref="messageFactory" />
    <property name="marshaller" ref="ptsJaxbMarshaller" />
    <property name="unmarshaller" ref="ptsJaxbMarshaller" />
    <property name="interceptors">
        <list>
            <ref bean="loggingInterceptor" />
        </list>
    </property>
</bean>

Когда я пытаюсь развернуть это или вызвать его из теста Junit, я получаю следующую ошибку:

  Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.ws.client.core.WebServiceTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=PTS)}
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
   at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
   at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474)
   ... 100 more

person mandy    schedule 06.02.2013    source источник


Ответы (1)


Вам не нужна аннотация квалификатора, если вы используете одно и то же имя для атрибута и для идентификатора компонента Spring.

Если вы все еще хотите, используйте «ptsWebServiceTemplate» для значения атрибута аннотации Qualifier.

Элемент qualifier в XML предназначен для пользовательских типов аннотаций Qualifier (ваша собственная аннотация, аннотированная самим @Qualifier).

person jbbarquero    schedule 06.02.2013