2015-12-04 2 views
0

Мое пружинное автоустройство, похоже, терпит неудачу, поэтому я сделал метод postconstruct, чтобы распечатать, что происходит. Оказывается, мой класс обслуживания impl создается дважды, и во второй раз аутсорсинг терпит неудачу.Весенний автопогрузчик работает, а не

Here's the console output.

Который порождается этой части моего класса осущ

@Service 
public class DataMgmtWebServiceImpl implements DataMgmtPortType { 

    @Autowired 
    private CCRQueueDAO ccrQueueDAO; 
    @Autowired 
    private RSNCodeDAO rsnCodeDAO; 

    private FileManagement fileManagement; 

    private boolean testing = false; 

    public DataMgmtWebServiceImpl() { 
      System.out.println("default " + ccrQueueDAO); 
    } 


    @PostConstruct 
    public void init() { 
      System.out.println("init: " + ccrQueueDAO); 
      SOAPToDatabase.rsnCodeDAO = rsnCodeDAO; 
    } 
    ... 
} 

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://cxf.apache.org/jaxws 
    http://cxf.apache.org/schemas/jaxws.xsd"> 

    <context:component-scan base-package="https"/> 
    <context:annotation-config /> 

    <import resource="classpath:META-INF/cxf/cxf.xml"/> 

    <bean id="impl" 

     class= 
     "mil.army.sddc.ibs.ccr.datamgmt.webservice.DataMgmtWebServiceImpl"/> 

    <bean id="reasonCodeDAO" 
     class="mil.army.sddc.ibs.ccr.dbwrapper.dao.RSNCodeDAO"  
     autowire="byName" > 
     <constructor-arg 
      value="jdbc:oracle:thin:@eipdzddevibs1:1526:CSSDEV"/> 
     <constructor-arg value="CSS" /> 
     <constructor-arg value="s*awk:a_xa2wpt#a7jiv" /> 
     <constructor-arg value="oracle.jdbc.driver.OracleDriver" /> 
    </bean> 
    <bean id="ccrQueueDAO" 
     class="mil.army.sddc.ibs.ccr.dbwrapper.dao.CCRQueueDAO"  
      autowire="byName" > 
     <constructor-arg 
      value="jdbc:oracle:thin:@eipdzddevibs1:1526:CSSDEV"/> 
     <constructor-arg value="CSS" /> 
     <constructor-arg value="s*awk:a_xa2wpt#a7jiv" /> 
     <constructor-arg value="oracle.jdbc.driver.OracleDriver" /> 
    </bean> 

    <jaxws:endpoint 
     id="dataMgmtWebService" 
     implementor="#impl" 
     address="/DataMgmt" /> 
</beans> 

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 

    <display-name>CCRDataMgmt</display-name> 
    <listener> 
     <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
     </listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 

    <!-- Session Timeout --> 
    <session-config> 
     <session-timeout>120</session-timeout> 
    </session-config> 
</web-app> 

Это довольно странно, и я уверен, что есть что-то действительно тупое и очевидное, что я пропал без вести, что вызывает его.

ответ

0

Ваши имена бобов не соответствуют rsnCodeDAO и reasonCodeDAO. И так как ваша инъекция находится на поле экземпляра. Сначала он создает экземпляр с конструктором, в этот момент зависимость пока не вводится. И с отражением он накладывает на частные свойства.

У вас также есть 2 определения bean для обслуживания, внутри xml и с анотацией. Один с зависимостями один без.

<bean id="impl" class= "mil.army.sddc.ibs.ccr.datamgmt.webservice.DataMgmtWebServiceImpl"/> 

и

@Service 

bean id="impl" Удаление из XML, вероятно, сделать его работу, как вы ожидаете (один компонент с зависимостями)

+0

Я установил имя (не могу поверить, что я пропустил это), но поведение не изменилось. – user2561604

+0

Но вы понимаете, что внутри конструктора «default» должен быть равен нулю, и это ожидается? потому что вам нужно создать объект, прежде чем устанавливать вложенную зависимость? – jonasnas

+0

Да, я ожидаю этого. Я просто бросил множество отладочных заявлений и хотел объяснить их присутствие на выходе. Я просто не знаю, почему он инициализируется дважды, и, что еще хуже, во второй раз ни один из моих бобах не получает автообучение. – user2561604

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