我正在尝试使用Spring Boot生成一个嵌套的配置列表,该列表可以具有不同的配置选项。
在下面的示例中,SubConfig包含一个类型字段,该字段应该是config正在创建的类的类路径。我可以使用非抽象的SubConfig类获取子配置列表,并从中获取类型,但是在那之后,我迷失了如何使用填充的配置值实际创建SubClass1或SubClass2。
此配置用于通过我定义的bean创建新的自动装配对象。
@Configuration
@ConfigurationProperties(prefix = "com.engineal")
public class BaseConfig {
private List<? extends SubConfig> subConfigs;
public List<? extends SubConfig> getSubConfigs() {
return subConfigs;
}
public void setSubConfigs(List<? extends SubConfig> subConfigs) {
this.subConfigs = subConfigs;
}
public static abstract class SubConfig {
private Class<?> type;
public Class<?> getType() {
return type;
}
public void setType(Class<?> type) {
this.type = type;
}
}
public static class SubConfig1 extends SubConfig {
private String field1;
public SubConfig getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
}
public static class SubConfig2 extends SubConfig {
private String field2;
public SubConfig getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
}
@Bean
public MyClass getMyClass() {
return new MyClass(subConfigs);
}
}
这是我所需应用程序的示例。yml:
com:
engineal:
sub-configs:
- type: com.engineal.BaseConfig.SubConfig1
field1: Value1
- type: com.engineal.BaseConfig.SubConfig1
field1: Value2
- type: com.engineal.BaseConfig.SubConfig2
field2: Value3