如何在Spring中定义一个List bean?

我使用Spring来定义我的应用程序中的阶段。 它被配置为必要的类(这里称为Configurator )被注入阶段。
现在我需要另一个类中的阶段列表,名为LoginBeanConfigurator器不能访问他的阶段列表。

我无法更改类Configurator

我的想法:
定义一个名为Stages的新bean并将其注入ConfiguratorLoginBean 。 我的这个想法的问题是我不知道如何改变这个属性:

<property ...>
  <list>
    <bean ... >...</bean>
    <bean ... >...</bean>
    <bean ... >...</bean>
  </list>
</property>

成豆。

像这样的东西不起作用:

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

另一个选择是使用JavaConfig。 假设所有阶段已经注册为春豆,你只需要:

@Autowired
private List<Stage> stages;

弹簧会自动将它们注入到这个列表中。 如果你需要保持秩序(上层解决方案不这样做),你可以这样做:

@Configuration
public class MyConfiguration {
  @Autowired
  private Stage1 stage1;

  @Autowired
  private Stage2 stage2;

  @Bean
  public List<Stage> stages() {
    return Lists.newArrayList(stage1, stage2);
  }
}

另一种维护订单的解决方案是在bean上使用@Order注释。 然后列表将包含按升序注释值排序的bean。

@Bean
@Order(1)
public Stage stage1() {
    return new Stage1();
}

@Bean
@Order(2)
public Stage stage2() {
    return new Stage2();
}
链接地址: http://www.djcxy.com/p/39157.html

上一篇: How to define a List bean in Spring?

下一篇: Spring Web flow configuration error