簡體   English   中英

Spring啟動YAML配置不讀取所有值

[英]Spring boot YAML Config not reading all values

我正在嘗試在Spring Boot 1.5.1項目中設置並使用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。 我的Hue Config的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

public class Scenes {

    @NestedConfigurationProperty
    private Sunstatus sunstatus;

    @NestedConfigurationProperty
    private Disable disable;

嵌套屬性

您可以在字段上使用@NestedConfigurationProperty批注來指示應將常規(非內部)類視為嵌套。

因此,要么添加注釋(如果您計划在其他地方使用類),要么將它們public static

嘗試這個。

@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
             */
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM