2017-05-09 6 views
0

외부 구성을 위해 YAML과 함께 Spring Boot 응용 프로그램을 사용하고 있으며, 지금까지 아주 잘 작동하고 있습니다. 다음과 같은 특성을 가진중첩 된 JSON을 사용하여 스프링 부트 YAML 구성을 작성하는 방법은 무엇입니까?

@Component 
@ConfigurationProperties 
class MyConfig { 
    String aaa; 
    Foo foo; 

    static class Foo { 
    String bar; 
    } 
} 

다음 YAML 파일 : 장난감 예를

aaa: hello 
foo.bar: world 

내 문제는 내가 정말 내 구성으로 된 JSONObject를 추가 할 필요가 있다는 것입니다.

aaa: hello 
from: 
    { 
    "first_initial": "D", 
    "last_initial": "E" 
    } 
foo.bar: world 

봄가 다음과 같은 오류가 발생했습니다 : 내가 먼저 MyConfig를 클래스의 필드로 추가하고 내가 구문 적으로 유효 생각 다음 YAML 파일을 작성하려고 참조 속성에 인덱스 값에 액세스 할 수 없습니다. ..

필자는 마침내 값을 일반 문자열로 바꾸고> 접기 태그를 사용하여 YAML에 넣었지만 코드에서 JsonObject로 문자열을 수동으로 구문 분석해야한다는 것을 의미했습니다.

누구나 어떻게 할 수 있습니까?

답변

1

이 작동합니다 :

@Component 
@ConfigurationProperties 
class MyConfig { 
    String aaa; 
    Foo foo; 
    String from; 
    static class Foo { 
    String bar; 
    } 
    // ... getters setters 

    public JsonObject getFromAsJson() { 
    // create object from "this.from" 
    } 
} 

aaa: hello 
foo: 
    bar: world 
from: | 
    { 
     "first_initial": "D", 
     "last_initial": "E" 
    } 

이 :

aaa: hello 
foo: 
    bar: world 
from: "{\"first_initial\": \"D\", \"last_initial\": \"E\"}" 

첫 번째 버전을 줄 바꿈을 보존하는 것입니다.

+0

제 질문에 답변 해 주셔서 감사합니다. 현재 JSON을> 문자를 사용하는 문자열로 취급하고 있지만 편집기 구문 강조 및 유효성 검사를 활용하려면 진정한 JSON으로 남겨 두는 것이 좋습니다. 이 문서는 YAML 파일로 검증되지만 Spring은이를 구성 파일로 읽는 것을 좋아하지 않습니다. – deinspanjer