Как динамически создавать beans в Spring Custom Starter на основе свойства - PullRequest
0 голосов
/ 17 июня 2020

Я пишу собственный весенний стартер, в котором мне нужно зарегистрировать список beans того же типа на основе свойства, определенного в application.properties

У меня есть следующие свойства в application.properties

mybean.names = mybean1, mybean2
mybean1.foo = foo1
mybean2.foo = foo2
mybean1.bar = bar1
mybean2.bar = bar2

Текущая реализация класса автоконфигурации ниже

@Configuration
@ConditionalOnClass(MyBeanFactory.class)
public class MyBeanAutoConfiguration {
@Autowire
Environemnt evn;

@Bean(name = {"mybean1"})
public MyBean getBean() {
  String[] names = StringUtils.commaDelimitedListToStringArray(evn.getProperty("mybean.names"));
  MyBean mybean = new Mybean(evn.getProperty(names[0] + ".foo"), 
                               evn.getProperty(names[0] + ".bar"));
return myBean;

}

}

И я хочу просто выполнить автоподключение с квалификатором моего bean-компонента в приложении весенней загрузки, как показано ниже

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {

  @Autowired
  @Qualifer("mybean1")
  MyBean mybean;

  public static void main(String[] args) {
    SpringApplication.run(VaultApplication.class, args);
  }

Как можно Я изменяю свой класс автоконфигурации, чтобы создать несколько bean-компонентов с разными именами, определенными в файле свойств (в этом случае, как я могу создать bean-компонент mybean2), чтобы я мог использовать просто autowire с квалификатором?

1 Ответ

0 голосов
/ 17 июня 2020

Я не уверен, что понял ваш вопрос, но если вы хотите иметь несколько bean-компонентов с разными именами, лучший способ - написать несколько методов @Bean в вашем классе конфигурации с другим именем, чтобы вы могли автоматически подключать каждый из них с помощью @ Квалифер

...