Файл Spring Config, состоящий из списка реализаций - PullRequest
1 голос
/ 30 ноября 2010

Я очень новичок в весне. У меня есть интерфейс (MessageHandler), который имеет метод get, этот метод возвращает список реализаций другого интерфейса (messageChecker).

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

В моей конфигурации Spring XML у меня есть что-то подобное, наряду с другими компонентами

<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>

Здесь я передаю контрольный список - список реализаций (пока у меня есть только 1) интерфейса (messageChecker)

Контрольный список содержит ссылки на Bean Id, которые являются фактическими реализациями.

HL7Checker является реализацией интерфейса messageChecker.

Но когда я запускаю основную программу, когда я внедряю бин "messageHandler" и вызываю getMessageCheckerList, он возвращает нулевое значение. Эти методы получения и установки работают нормально без использования пружины.

Я не уверен, в чем проблема.

1 Ответ

0 голосов
/ 01 декабря 2010

Я не знаю ответа на ваши неприятности, но я бы проверил:

  • называется ли сеттер setMessageCheckerList(List) в messageHandler бобе?(либо используя какой-либо отладчик, либо какой-либо вывод трассировки, например System.out...)Если это не так, возможно, что-то не так с настройкой конфигурации Spring XML.В опубликованном вами определении компонента требуется задать свойство, и Spring не создаст компонент messageHandler без установки свойства.
  • , кто вызывает установщик setMessageCheckerList(List)?Или еще точнее, какой код записывает в поле, в котором хранится значение свойства?Может быть, поле правильно инициализируется Spring, но позже перезаписывается на null?
  • Вы уверены, что вызываете getMessageCheckerList того же самого объекта, который Spring сконфигурировал для вас (то есть messageHandler боб).В опубликованном вами определении четко указано, что экземпляр MessageHandlerImpl создан Spring, но он не препятствует созданию других экземпляров другими способами.Поэтому, возможно, экземпляр, созданный Spring, содержит правильное значение, но вы запускаете get... на неправильном экземпляре?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...