java - Spring 配置文件由实现列表组成

标签 java spring configuration dependency-injection

我对 Spring 很陌生。我有一个接口(interface)(MessageHandler),它有一个get方法,该方法返回另一个接口(interface)(messageChecker)的实现列表。

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

在我的 Spring XML 配置中,我有这样的东西,以及其他 bean

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

这里我传递了一个检查列表 - 这是接口(interface)(messageChecker)的实现列表(目前我只有 1 个)

Checkerlist 包含对实际实现的 Bean Id 的引用。

HL7Checker 是接口(interface) messageChecker 的实现。

但是当我运行主程序时,当我注入(inject)bean“messageHandler”并调用getMessageCheckerList时,它返回一个空值。这些 getter 和 setter 方法在不使用 spring 的情况下工作正常。

我不确定问题出在哪里。

最佳答案

我不知道您的烦恼的答案,但我会检查:

  • 是二传手 setMessageCheckerList(List)messageHandler bean 叫什么? (使用一些调试器或一些跟踪输出,如 System.out... )。如果不是,则您的 Spring XML 配置设置可能有问题。您发布的 bean 定义需要设置该属性,并且 Spring 不会创建 messageHandler bean 无需设置属性。
  • 谁调用 setMessageCheckerList(List)二传手?或者更准确地说,什么代码写入存储属性值的字段?也许该字段已被 Spring 正确初始化,但被覆盖为 null后来呢?
  • 您确定要调用getMessageCheckerList吗?在 Spring 为您配置的同一个对象上(即 messageHandler bean)。您发布的定义清楚地说明了 MessageHandlerImpl 的一个实例由Spring创建,但并不阻止通过其他方式创建其他实例。因此,也许 Spring 创建的实例拥有正确的值,但您运行 get...在错误的实例上?

关于java - Spring 配置文件由实现列表组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4316911/

相关文章:

java - 为什么我的 "index.jsp"无法使用 java 和 Spring 识别 Controller 中的变量

java - 如何在 Spring MVC 中将 JSON 有效负载发布到 @RequestParam

java - Spring boot 不会提示两个同名的 bean

visual-studio - Visual Studio C# 引用警告

php - 使用 PHP + IIS6 的网站可以覆盖 php.ini 设置吗?

java - spring WebApplicationInitializer 配置多个servlet

java - 缺少 Twitter4j 身份验证凭据

java - android 接收结果

spring - DriverManagerDataSource 和 SimpleDriverDataSource 的区别

java - 未使用 Spring AMQP StatefulRetryOperationsInterceptor