是否可以在Spring Boot YML配置类中使用继承?如果是这样,那将如何实现?
例如:
@ConfigurationProperties(prefix="my-config")
public class Config {
List<Vehicle> vehicles;
}
类(或接口)“Vehicle”有两个实现:Truck和Car。所以YAML可能看起来像:
my.config.vehicles:
-
type: car
seats: 3
-
type: truck
axles: 3
答案 0 :(得分:1)
我认为不可能(至少我不知道)。但是,您可以按如下方式设计代码:
定义一个包含所有属性的对象,我们将其称为MyInterfaceReloader
(或工厂,您选择其名称)。
从{Yaml注入VehicleBuilder
。
然后,您可以在VehicleBuilders
块中检索每个构建器的车辆。代码:
@PostConstruct
建设者:
@ConfigurationProperties(prefix="my-config")
@Component
public class Config {
private List<VehicleBuilder> vehicles = new ArrayList<VehicleBuilder>();
private List<Vehicle> concreteVehicles;
public List<VehicleFactory> getVehicles() {
return vehicles;
}
public List<Vehicle> getConcreteVehicles() {
return concreteVehicles;
}
@PostConstruct
protected void postConstruct(){
concreteVehicles = vehicles.stream().map(f -> f.get())
.collect(Collectors.<Vehicle>toList());
}
}