gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:52:12 25 4
gpt4 key购买 nike

我对 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com