我正在使用Spring定义应用程序中的阶段。配置为将必要的类(此处称为Configurator)与阶段一起注入。 现在,我需要另一个名为的类的阶段列表LoginBean。在Configurator不提供访问其阶段的名单。
Spring
LoginBean
Configurator
我不能改变班级Configurator。
我的想法: 定义一个名为Stages的新bean,并将其注入到Configurator和中LoginBean。我的想法是,我不知道如何转换此属性:
<property ...> <list> <bean ... >...</bean> <bean ... >...</bean> <bean ... >...</bean> </list> </property>
into a bean.
这样的事情不起作用:
<bean id="stages" class="java.util.ArrayList">
有人可以帮我吗?
导入spring util名称空间。然后,你可以如下定义一个列表bean:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"> <util:list id="myList" value-type="java.lang.String"> <value>foo</value> <value>bar</value> </util:list>
值类型是要使用的泛型类型,并且是可选的。你也可以使用属性指定列表实现类list-class。
list-class
这是一种方法:
<bean id="stage1" class="Stageclass"/> <bean id="stage2" class="Stageclass"/> <bean id="stages" class="java.util.ArrayList"> <constructor-arg> <list> <ref bean="stage1" /> <ref bean="stage2" /> </list> </constructor-arg> </bean>