Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用包含列表的构造函数编写Springbean?_Java_Spring_Spring Mvc_Web.xml - Fatal编程技术网

Java 如何使用包含列表的构造函数编写Springbean?

Java 如何使用包含列表的构造函数编写Springbean?,java,spring,spring-mvc,web.xml,Java,Spring,Spring Mvc,Web.xml,我的名单如下: ArrayList<DiameterMessageHandler> handlers = new ArrayList<>(); handlers.add(new AARHandler()); handlers.add(new CERHandler()); handlers.add(new PPAHandler()); handlers.add(new STRHandler()); handlers.add(new DWRHandler()); Array

我的名单如下:

ArrayList<DiameterMessageHandler> handlers = new ArrayList<>();
handlers.add(new AARHandler());
handlers.add(new CERHandler());
handlers.add(new PPAHandler());
handlers.add(new STRHandler());
handlers.add(new DWRHandler());
ArrayList handlers=new ArrayList();
add(new AARHandler());
add(new CERHandler());
add(新的PPAHandler());
add(新的STRHandler());
add(新的DWRHandler());
我想知道如何创建一个将处理程序作为其参数之一的Springbean,也就是说,是否可以在applicationContext.xml中这样做?我是否必须首先为列表和每个处理程序(AARHandler等)创建单独的bean?这是我的applicationContext.xml

<bean id="DiameterClient" class="com.rory.ptspsim.diameterclient.DiameterClient" scope="singleton" init-method="start">
        <constructor-arg type="java.lang.String" index="0"><value>${pcca.host}</value></constructor-arg>      
        <constructor-arg index="1">WHAT GOES HERE?</constructor-arg>        
    </bean>

${pcca.host}
这里有什么?


可能您也希望所有这些处理程序都是Springbean。以下是配置:

<bean id="DiameterClient" class="com.rory.ptspsim.diameterclient.DiameterClient" init-method="start">
    <constructor-arg value="${pcca.host}" />
    <constructor-arg>
        <list>
            <ref bean="aarHandler" />
            ...
        </list>
    </constructor-arg>      
</bean>

<bean id="aarHandler" class="com.rory.ptspsim.diameterclient.AARHandler" />

...

${pcca.host}

我认为最合适的方法是:

<bean id="DiameterClient" class="com.rory.ptspsim.diameterclient.DiameterClient"       scope="singleton" init-method="start">
    <constructor-arg type="java.lang.String" index="0"><value>${pcca.host}</value></constructor-arg>
    <constructor-arg index="1">
       <list>
           <ref bean="aarHandler" />
           <ref bean="cerHandler" />     
           <ref bean="ppaHandler" />
           <ref bean="strHandler" />
           <ref bean="dwrHandler" />
       </list>       
    </constructor>
</bean>

${pcca.host}

您可以访问以下链接

如果需要所有可用的处理程序,Spring还将通过自动连线为您收集它们:

public DiameterClient(@Autowired List<DiameterMessageHandler> handlers){
    this.handlers = handlers;
}
public DiameterClient(@Autowired列表处理程序){
this.handlers=handlers;
}
现在Spring将注入所有可用处理程序的列表


请参见

这是前五项中最好的答案。:-)注意:链接带我去了某个rep.playzonenow.com网站,上面有“查看报价”按钮——不要进入该链接。
<bean id="DiameterClient" class="com.rory.ptspsim.diameterclient.DiameterClient"       scope="singleton" init-method="start">
    <constructor-arg type="java.lang.String" index="0"><value>${pcca.host}</value></constructor-arg>
    <constructor-arg index="1">
       <list>
           <ref bean="aarHandler" />
           <ref bean="cerHandler" />     
           <ref bean="ppaHandler" />
           <ref bean="strHandler" />
           <ref bean="dwrHandler" />
       </list>       
    </constructor>
</bean>
public DiameterClient(@Autowired List<DiameterMessageHandler> handlers){
    this.handlers = handlers;
}