2017-02-09 5 views
1

Springブート1.5.1プロジェクトで設定ファイルとしてYAMLをセットアップして使用しようとしています。スプリングブートYAML設定がすべての値を読み取っていません

私のYAMLファイルは次のようになります

hue: 
    user: cdKjsOQIRY8hqweAasdmx-WMsn 
    ip: "http://192.168.1.69" 
    scenes: 
     sunstatus: 
      enabled: true 
      id: 93yv8JekmAneCU9 
      group: 1 
     disable: 
      enabled: true 
      id: 93yv8JekmAneCU9 
      group: 6 

それはhue.getUserを(読むために完全に正常に動作します)。しかし、hue.getScenes()は何らかの理由でnullを返します。色相コンフィグのための私のJavaコード次のようになります。

@Configuration 
@ConfigurationProperties(prefix = "hue") 
public class Hue { 
    private String user; 
    private String ip; 
    private Scenes scenes; 

    /* 
    * Getters and setters of course 
    */ 

    public class Scenes { 
     private Sunstatus sunstatus; 
     private Disable disable; 

     /* 
     * Getters and setters 
     */ 

     public class Sunstatus { 
      private boolean enabled; 
      private String id; 
      private String group; 

      /* 
      * Getters and setters 
      */ 
     } 

     public class Disable { 
      private boolean enabled; 
      private String id; 
      private String group; 

      /* 
      * Getters and setters 
      */ 
     } 
    } 
} 

私は両方hue.scenes.sunstatusの形式で、同様の接頭辞で、各クラスに注釈を付けるにも試してみた、scenes.sunstatusとただsunstatusだけでなく。

また、私は@Valueアノテーションを少しでも幸運なことなく使ってみました。

データをapplication.ymlまたは外部ファイルに保存すると同じ結果になります。常にgetUser()にしかアクセスできません。

私はここで間違っていますか?

私はあなたの代わりに @NestedConfigurationPropertyを追加する必要がありますので、あなたは、ネストされたコンフィギュレーションのための公共の非内部クラスを使用している参照

答えて

0

:あなたは、フィールド上@NestedConfigurationPropertyアノテーションを使用することができます

public class Scenes { 

    @NestedConfigurationProperty 
    private Sunstatus sunstatus; 

    @NestedConfigurationProperty 
    private Disable disable; 

Nested properties

を規則的な(非内部の)クラスがネストされているかのように扱われるべきであることを示す。

したがって、アノテーションを追加するか(クラスを他の場所で使用する予定のある場合)、またはpublic staticにします。

+0

ヒントをいただきありがとうございますが、それに切り替えても、私はまったく同じ問題を抱えています。 –

+0

参照状態のようにクラスを静的に静的にしようとしましたが、正しいgetters/setterを追加しましたか? –

+0

もう一度やり直してみましたが、まだヌルです。 –

0

これを試してください。

@Configuration 
@ConfigurationProperties(prefix = "hue") 
public class Hue { 
    private String user; 
    private String ip; 
    private Scenes scenes = new Scenes(); 

    /* 
    * Getters and setters of course 
    */ 

    public class Scenes { 
     private Sunstatus sunstatus = new Sunstatus(); 
     private Disable disable = new Disable(); 

     /* 
     * Getters and setters 
     */ 

     public class Sunstatus { 
      private boolean enabled; 
      private String id; 
      private String group; 

      /* 
      * Getters and setters 
      */ 
     } 

     public class Disable { 
      private boolean enabled; 
      private String id; 
      private String group; 

      /* 
      * Getters and setters 
      */ 
     } 
    } 
} 
+0

シーンはこれらの変更で初期化されますが、例ではnullが返されます:hue.getScenes()。getSunstatus()。getId() –

+0

これは私にとっては大丈夫です。 –

関連する問題