Я использую Spring для определения этапов в моем приложении. Это настроено что необходимый класс (здесь названный Configurator
) введен с этапами.
Теперь мне нужен Список Этапов в другом классе, названном LoginBean
. Configurator
не предлагает доступа к его Списку Этапов.
Я не могу изменить класс Configurator
.
Моя идея:
Определите новый боб под названием Этапы и введите его к Configurator
и LoginBean
. Моя проблема с этой идеей состоит в том, что я не знаю, как преобразовать это свойство:
<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
.
Вот один из методов:
<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>
Думаю, вы ищете org.springframework.beans.factory.config.ListFactoryBean
.
Вы объявляете экземпляр ListFactoryBean, предоставляя список для создания экземпляра как свойство с элементом
в качестве его значения, и присваиваете компоненту атрибут
id
. Затем, каждый раз, когда вы используете объявленный id
как ref
или аналогичный в каком-либо другом объявлении bean-компонента, создается новая копия списка. Вы также можете указать используемый класс List
.
Используя пространство имен util, вы сможете зарегистрировать список как bean-компонент в контексте вашего приложения. Затем вы можете повторно использовать список, чтобы внедрить его в другие определения bean-компонентов.