Я использую Spring для определения этапов в моем приложении. Настраивается, что необходимый класс (здесь называется Configurator
) вводится с этапами.
Теперь мне нужен список этапов в другом классе с именем LoginBean
. Configurator
Не предоставляет доступ к своему списку этапов.
Я не могу изменить класс Configurator
.
Моя идея:
определить новый бин с именем Stages и добавить его в Configurator
и LoginBean
. Моя проблема с этой идеей состоит в том, что я не знаю, как преобразовать это свойство:
<property ...>
<list>
<bean ... >...</bean>
<bean ... >...</bean>
<bean ... >...</bean>
</list>
</property>
в боб.
Как то так не работает
<bean id="stages" class="java.util.ArrayList">
Кто-нибудь может мне помочь с этим?
<property name="beanList" ref="myList"/>
@Autwired
это не помогает при добавлении списка, созданного таким образом. Однако@Resource
работает. то есть@Resource List<String> myList
Вот один из методов:
источник
StageClass
декларации bean во<list>
избежание необходимости в<ref>
элементах.Другой вариант - использовать JavaConfig. Предполагая, что все стадии уже зарегистрированы как бобы весны, вам просто нужно:
и весна автоматически добавит их в этот список. Если вам нужно сохранить порядок (верхнее решение этого не делает), вы можете сделать это следующим образом:
Другое решение для сохранения порядка - использование
@Order
аннотации на бобах. Тогда список будет содержать компоненты, упорядоченные по возрастанию значения аннотации.источник
И в SomeClass:
источник
Stacker дал отличный ответ, я бы пошел еще дальше, чтобы сделать его более динамичным и использовать Spring 3 EL Expression.
Я пытался выяснить, как я могу сделать это с помощью util: list, но не смог заставить его работать из-за ошибок преобразования.
источник
Я думаю, что вы можете искать
org.springframework.beans.factory.config.ListFactoryBean
.Вы объявляете экземпляр ListFactoryBean, предоставляя список для создания экземпляра как свойство с
<list>
элементом в качестве его значения, и даете bean-компонентуid
атрибут. Затем каждый раз, когда вы используете объявленныйid
какref
или подобное в каком-либо другом объявлении bean-компонента, создается новая копия списка. Вы также можете указатьList
класс, который будет использоваться.источник
определите эти бины (test1, test2) впоследствии :)
источник
Используйте пространство имен util, вы сможете зарегистрировать список как компонент в контексте вашего приложения. Затем вы можете повторно использовать список, чтобы добавить его в другие определения bean-компонентов.
источник
В дополнение к ответу Якуба, если вы планируете использовать JavaConfig, вы также можете выполнить автоматическое подключение следующим образом:
источник
Вы просто удаляете
id
из бобов внутри<list>
тега. Как это:источник
И вот как вставить множество в какое-то свойство в Spring:
источник
Вставить список строк.
Предположим, у вас есть класс моделей стран, который принимает список строк, как показано ниже.
Следующее определение xml определяет бин и вводит список стран.
Ссылка ссылка
Вставить список Pojos
Предположим, у вас есть модель класса, как показано ниже.
Определения Бина.
Ссылка Ссылка .
источник