优雅做法你应该写成 map 的方式注入配置,可以参考 security 中关于不同的 resource 的注入
根据你的示例可以改写成
配置文件
```yml
spring:
...
vendor:
proto: // 原型缺省值
name: test
age: 20
income: 100
instance: //实例列表
X:
age: 23 // 具体实例覆盖缺省值字段
Y:
name: test4 // 具体实例覆盖缺省值字段
```
配置类
```java
@
Data@
ConfigurationProperties(prefix = "vendor")
public class VendorProperties {
private Instance proto;
private Map<String,Instance> instanceMap;
@
Data public static class Instance{
private Integer age;
private String name;
private Integer income;
}
}
```
注入配置
```java
@
Configuration@
EnableConfigurationProperties({VendorProperties .class})
public class MayConfigurer {
@
Autowired private VendorProperties vendorProperties;
public void doCreate(){
// todo 拿到这个配置类就可以写的的具体工厂方法了
Instance proto = vendorProperties.getProto();
// 灵活的方式改成遍历 entrySet 的方式最好,下面我就简单写一下获取不同的配置方式
Instance x = vendorProperties.getInstanceMap().get("X");
Instance y = vendorProperties.getInstanceMap().get("Y");
}
}
```