我需要使用屬性文件創建多個相同名稱的bean。例如:Spring - 從application.properties動態創建Bean
rabbit.example.language[0]=java
rabbit.example.framework[0]=spring
rabbit.example.language[1]=python
rabbit.example.framework[1]=django
我想爲每個例如索引一個Bean(這將最終被用於兔隊列,但我簡化的東西)。以下是我正在使用的一些代碼。
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());
});
}
}
我期待的輸出爲Java的Python的,但「兔子「現在迴歸爲空。任何人都可以告訴我哪裏出錯了嗎?