プロパティファイルを使用して同じ名前の複数のBeanを作成する必要があります。たとえば:春 - 動的に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のことを期待しますが、「ウサギよ"ヌルとして戻ってくる。誰かが私が間違っていることを伝えることができますか?一例として、
rabbit.example[0].language=java
rabbit.example[0].framework=spring
rabbit.example[1].language=python
rabbit.example[1].framework=django
が一覧になりますので、あなたはそれでインデックスを追加する必要があります。