【问题标题】:Multiple Implementations passed in a list列表中传递的多个实现
【发布时间】:2010-11-30 00:33:37
【问题描述】:

我是 Spring 新手。我有这个问题困扰了我一段时间。任何帮助将不胜感激。

有一个调用 getter 方法的接口。

interface MessageHandler{

    public List GetMessageCheckerList();

}

还有一个名为 MessageChecker 的接口,它有多个实现。 说 MessageChecker1、TestChecker 等(现在假设为 2)

现在我如何在配置 xml 文件中定义它。

我实际上已经创建了 bean,

这是剩下的代码

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


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

请指教

当我实际使用 main 方法运行程序时,我得到了其中一个 bean 的句柄,HL7Checker 应该以列表的形式传递给 ID=messageHandler 的 Bean。但是当我打印出列表时。它是空的。

不使用 spring 并且只使用 getter 和 setter 方法,我可以“设置”一个列表并使用 Get 检索它。

【问题讨论】:

  • “不工作”是什么意思?告诉我们您的期望和结果。
  • 我走对了吗?请指教
  • 我无法判断您是否走在正确的道路上。 bean 定义看起来不错,因此您应该向我们展示访问 bean 的代码。并请使代码尽可能完整。最好是一个可以编译的程序。

标签: java xml spring configuration interface


【解决方案1】:
  1. 几乎所有的名称都不符合 Java 命名约定。这会让其他人难以理解您的代码。
  2. &lt;ref&gt; 标记需要 object 的名称,而不是 class 的名称。因此,您需要先定义一个&lt;bean id="testChecker" class="com.test.TestChecker" /&gt;,然后才能引用它。
  3. 不要使用包名com.Test。首先,它应该只包含小写字母。其次,您应该是该名称的所有者。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2018-02-04
    相关资源
    最近更新 更多