2010-11-30 5 views
1

저는 봄에 매우 익숙합니다. 인터페이스 (MessageHandler)에 get 메서드가 있으면이 메서드는 다른 인터페이스 (messageChecker)의 구현 목록을 반환합니다. 지금은 단지 1이 들어 구현의 목록입니다 (- 나의 봄 XML 구성에서 구현 목록으로 구성된 스프링 구성 파일

public interface MessageHandler { 
    public void process(BufferedReader br); 
    public void setMessageCheckerList(List mcList); 
    [B]public List getMessageCheckerList();[/B] 
} 

, 내가 다른 콩

다음
<bean id="messageHandler" class="com.XXX.messagereceiver.MessageHandlerImpl"> 
    <property name="messageCheckerList" ref="checkerList"/> 
</bean> 

<bean id="checkerList" class="java.util.ArrayList"> 
    <constructor-arg> 
    <list> 
    <ref bean="HL7Checker"/> 
    </list> 
    </constructor-arg> 
</bean> 

<bean id="HL7Checker" class="com.XXX.messagereceiver.HL7CheckerImpl"> 
    <property name="messageExecutor" ref="kahootzExecutor"/> 
</bean> 

나는 checkerlist을 전달하고 함께 같은 것을 가지고) of interface (messageChecker)

Checkerlist에는 실제 구현물 인 Bean Id에 대한 참조가 들어 있습니다.

HL7Checker는 messageChecker 인터페이스 구현입니다.

하지만 메인 프로그램을 실행할 때 bean "messageHandler"를 삽입하고 getMessageCheckerList를 호출하면 null 값을 반환합니다. 이러한 getter 및 setter 메서드는 스프링을 사용하지 않아도 올바르게 작동합니다.

무엇이 문제인지 잘 모르겠습니다.

답변

0

나는 당신의 문제에 대한 해답을 알고하지 않습니다,하지만 난 확인합니다 :

  • messageHandler 빈에서 세터 setMessageCheckerList(List)라고? (일부 디버거 또는 System.out...과 같은 일부 추적 출력 사용). 그렇지 않은 경우, Spring XML 구성 설정에 문제가있을 수 있습니다. 게시 한 bean 정의는 속성을 설정해야하고 Spring은 속성을 설정하지 않고 messageHandler bean을 만들지 않습니다.
  • 누가 setMessageCheckerList(List) 세터를 부르겠습니까? 또는 더 정확히 말하면, 어떤 코드가 속성의 값을 저장하는 필드에 씁니 까? 어쩌면 필드가 Spring에 의해 올바르게 초기화되었지만 나중에 null으로 덮어 쓰게됩니까?
  • 스프링이 사용자를 위해 구성된 동일한 객체 (즉, messageHandler 빈)에 getMessageCheckerList을 호출해야합니다. 당신이 게시 한 정의는 Spring에 의해 MessageHandlerImpl의 인스턴스가 생성되었지만 다른 인스턴스가 다른 방법으로 생성되는 것을 막지는 않는다는 것을 분명하게 알려줍니다. 그래서 Spring에 의해 생성 된 인스턴스가 적절한 값을 가지고 있지만 잘못된 인스턴스에서 get...을 실행합니까?
+0

감사합니다. Grzegorz, 저의 구현에 새로운 메시지 처리기를 만들었습니다. 그것의 일 벌금. – velapanur