如何在春季定义列表豆?

2022-08-31 06:04:39

我正在使用Spring来定义应用程序中的阶段。它配置为向必要的类(此处称为 )注入阶段。
现在我需要另一个名为 的类中的阶段列表。不提供访问他的阶段列表的权限。ConfiguratorLoginBeanConfigurator

我无法更改类。Configurator

我的想法:
定义一个名为 Stages 的新 Bean 并将其注入 and 。我对这个想法的问题是我不知道如何转换这个属性:ConfiguratorLoginBean

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

变成豆子。

像这样的东西不起作用:

<bean id="stages" class="java.util.ArrayList">

任何人都可以帮我吗?


答案 1

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


答案 2

这是一种方法:

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

推荐