Ich habe mehrere Beans mit demselben Namen mithilfe der Eigenschaftendatei erstellen müssen. Zum Beispiel:Spring - Erstellen von Beans dynamisch aus application.properties
rabbit.example.language[0]=java
rabbit.example.framework[0]=spring
rabbit.example.language[1]=python
rabbit.example.framework[1]=django
würde Ich mag eine Bean für jedes Beispiel Index erstellen (dies letztlich für Kaninchen Warteschlangen verwendet werden, aber ich bin zu vereinfachen Dinge). Hier ist ein Code, mit dem ich bis jetzt arbeite.
Rabbits.java
@Configuration
@ConfigurationProperties(prefix="example")
public class Rabbits {
private String language;
private String framework;
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language= language;
}
public String getFramework() {
return framework;
}
public void setFramework(String framework) {
this.framework= framework;
}
}
Properties.java
@Configuration
@ConfigurationProperties(prefix = "rabbit")
public class Properties {
@NestedConfigurationProperty
private List<Rabbits> rabbits = new ArrayList<Rabbits>();
public List<Rabbits> getRabbits() {
return rabbits;
}
public void setRabbits(List<Rabbits> rabbits) {
this.rabbits = rabbits;
}
@Bean
RabbitFlowProcessor rabbitFlowProcessor(List<Rabbits> rabbit){
return new RabbitFlowProcessor(rabbit);
}
}
RabbitFlowProcessor.java:
@Component
public class RabbitFlowProcessor implements BeanFactoryPostProcessor {
private List<Rabbits> rabbits;
public RabbitFlowProcessor(List<Rabbits> rabbits) {
this.rabbits = rabbits;
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
rabbits.stream()
.forEach(rabbit -> {
System.out.println(rabbit.getLanguage());
});
}
}
ich die Ausgabe erwartete Java Python zu sein, aber die „Kaninchen "kommen als null zurück. Kann mir jemand sagen, wo ich falsch liege?