2017-05-09 7 views
0

私は、YAMLで外部設定を行うSpringブートアプリケーションを使用していますが、これまでのところうまくいきました。おもちゃの例:ネストされたJSONを使用してSpringブート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

関連する問題