0

모양을 기본값으로 상속하고 재정의를 지원하는 목록을 만들려면 어떻게 구성을로드해야합니까? 여기Spring @ConfigurationProperties 상속/중첩

다음하지만 누락 된 기본값 지금까지 ... 내가 시도

{ 
    "catalog": { 
    "shapes": [ 
     { 
     "color": "red", // default 
     "size": 20,  // override 
     "id": "square" 
     }, 
     { 
     "color": "black", // override 
     "size": 30,  // override 
     "id": "circle"  
     }, 
     { 
     "color": "red", // default 
     "size": 10,  // default 
     "id": "rectangle" 
     } 
    ] 
    } 
} 

... 내 application.yml 파일과 같은 모양을

store: 
    default: 
    color: red 
    size: 10 

    shapes: 
    - id: square 
     size: 20 

    - id: circle 
     size: 30 
     color: black 

    - id: rectangle 

입니다 그리고 여기에 내가 원하는 것입니다 상속에서. 즉, 기본값은 모양의 개체로 변환되지 않습니다.

@lombok.Data 
@Component 
@ConfigurationProperties(prefix = "store") 
public class Catalog { 
    private List<Shape> shapes; 
} 

@lombok.Data 
public class Shape extends DefaultConfig { 
    private String id; 
} 

@lombok.Data 
@ConfigurationProperties(prefix = "store.default") 
@Component 
public class DefaultConfig { 
    private String color; 
    private int size; 
} 

답변

0

마술 방법이 없습니다. 크기는 Integer이어야하며 필요한 경우 기본값을 적용하기 위해 구성을 사후 처리해야합니다.

뭔가 쉽게

public class Catalog { 

    private final DefaultConfig defaultConfig; 

    public Catalog(DefaultConfig defaultConfig) { ... } 

    @PostConstruct 
    public void initialize() { 
     // iterate over all the shapes and if the color or size is null 
     // apply the default value from defalutConfig 
    } 
} 
관련 문제