Java 列表中传递了多个实现

Java 列表中传递了多个实现,java,xml,spring,configuration,interface,Java,Xml,Spring,Configuration,Interface,我是春天的新手。我有一个问题一直困扰着我。任何帮助都将不胜感激 <bean id="checkerList" class="java.util.ArrayList"> <constructor-arg> <list> <ref bean="HL7Checker"/> </list> </constructor-arg> </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>
有一个调用getter方法的接口

interface MessageHandler{

    public List GetMessageCheckerList();

}
<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>
还有另一个称为MessageChecker的接口,它有多个实现。 比如MessageChecker1、TestChecker等(现在假设为2)

<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>
现在我如何在配置xml文件中定义它

<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>
实际上我已经制作了豆子

<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>
下面是代码的其余部分

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

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

请指教

<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。但是当我把清单打印出来的时候。它是空的

<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>
不使用spring,只使用getter和setter方法,我就能够“设置”列表并使用Get检索它

<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>
  • 几乎所有的名字都不符合Java命名约定。这使得其他人很难理解您的代码
  • 标记需要对象的名称,而不是类的名称。因此,您需要先定义一个
    ,然后才能引用它
  • 不要使用包名
    com.Test
    。首先,它应该只包含小写字母。第二,你应该是这个名字的主人

  • “不工作”是什么意思?告诉我们你期望什么,你得到了什么。我走对了吗?请注意,我不知道你是否走对了路。bean定义看起来不错,所以您应该向我们展示访问bean的代码。请尽可能完整地填写代码。最好是一个可以编译的程序。