Как определить компонент списка весной?

Я использую Spring для определения этапов моего приложения. Он настроен на то, что необходимый class (здесь называется Configurator ) вводится этапами.
Теперь мне нужен список этапов в другом classе с именем LoginBean . Configurator не предоставляет доступ к его списку этапов.

Я не могу изменить Configurator classов.

Моя идея:
Определите новый bean-компонент под названием Stages и введите его в Configurator и LoginBean . Моя проблема с этой идеей заключается в том, что я не знаю, как преобразовать это свойство:

   ... ... ...   

в фасоль.

Что-то вроде этого не работает:

  

Может ли кто-нибудь помочь мне в этом?

Импортируйте пространство имен spring util. Затем вы можете определить список компонентов следующим образом:

    foo bar  

Тип значения – это тип генериков, который будет использоваться, и является необязательным. Вы также можете указать class реализации списка, используя class list-class атрибутов.

Вот один из способов:

           

Другой вариант – использовать JavaConfig. Предполагая, что все этапы уже зарегистрированы как весенние бобы, вам просто нужно:

 @Autowired private List stages; 

и весна автоматически введет их в этот список. Если вам нужно сохранить порядок (верхнее решение этого не делает), вы можете сделать это следующим образом:

 @Configuration public class MyConfiguration { @Autowired private Stage1 stage1; @Autowired private Stage2 stage2; @Bean public List stages() { return Lists.newArrayList(stage1, stage2); } } 

Другим решением для сохранения порядка является аннотация @Order для bean-компонентов. Затем список будет содержать бины, упорядоченные по возрастанию значения annotations.

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

И в SomeClass:

 class SomeClass { private List myList; @Required public void setMyList(List myList) { this.myList = myList; } } 

Штабелер дал отличный ответ, я бы сделал шаг дальше, чтобы сделать его более динамичным и использовать Spring 3 EL Expression.

   #{springDAOBean.getGenericListFoo()}   

Я пытался выяснить, как это сделать с помощью списка util: list, но не смог заставить его работать из-за ошибок преобразования.

Я думаю, вы можете искать org.springframework.beans.factory.config.ListFactoryBean .

Вы объявляете экземпляр ListFactoryBean, предоставляя список, который должен быть создан как свойство с элементом качестве его значения, и присваивать компоненту атрибут id . Затем каждый раз, когда вы используете объявленный id как ref или аналогичный в каком-либо другом объявлении bean, создается новая копия списка. Вы также можете указать class List который будет использоваться.

Используйте пространство имен util, вы сможете зарегистрировать этот список в виде компонента в контексте вашего приложения. Затем вы можете повторно использовать список, чтобы ввести его в другие определения bean-компонентов.

В дополнение к ответу Якуба, если вы планируете использовать JavaConfig, вы также можете автоустанавливать этот путь:

 import com.google.common.collect.Lists; import java.util.List; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Bean; <...> @Configuration public class MyConfiguration { @Bean public List stages(final Stage1 stage1, final Stage2 stage2) { return Lists.newArrayList(stage1, stage2); } } 

И вот как добавить в какое-то свойство значение Spring:

          
            

затем определите те бобы (test1, test2) 🙂

  • Аннотация @Transactional. Как откат?
  • Инициализация Log4J с помощью Spring?
  • Spring MVC + JSON = 406 Не допускается
  • Разверните Spring Boot для Tomcat
  • Hibernate: MyInterceptor # onFlushDirty никогда не вызывается
  • Настраивать DataSource программно в Spring Boot
  • Как использовать YamlPropertiesFactoryBean для загрузки файлов YAML с использованием Spring Framework 4.1?
  • Использование автозапуска Spring 3 в автономном приложении Java
  • Spring - redirect после POST (даже с ошибками проверки)
  • Как внедрить AuthenticationManager с использованием конфигурации Java в пользовательский фильтр
  • Обычная аутентификация для REST API с использованием Spring restTemplate
  • Давайте будем гением компьютера.