当前位置: 首页 > 知识库问答 >
问题:

Spring boot YAML配置未读取所有值

郑光济
2023-03-14

我试图在Spring Boot 1.5.1项目中设置并使用YAML as配置文件。

我的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.get用户()非常好。但是,hue.get场景()由于某种原因返回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和sunstate的格式都是如此。

此外,我还尝试使用@Value注释,但没有任何运气。

如果我将数据保存在application.yml或外部文件中,结果是相同的。只能访问getUser()。

我做错了什么?

共有2个答案

梁巴英
2023-03-14

试试这个。

@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
             */
        }
    }
}
焦宏硕
2023-03-14

我看到您正在使用公共非内部类进行嵌套配置,所以您应该添加@NestedConfigurationProperty来代替:

public class Scenes {

    @NestedConfigurationProperty
    private Sunstatus sunstatus;

    @NestedConfigurationProperty
    private Disable disable;

嵌套属性

您可以在字段上使用@NestedConfigurationProperty注释来指示应将常规(非内部)类视为嵌套类。

因此,要么添加注释(如果您计划在其他地方使用类),要么将它们设为公共静态。

 类似资料:
  • 我正在通过Pandas的read_sql和外部应用程序(DbVisualizer)运行完全相同的查询。 DbVisualizer返回206行,而pandas返回178行。 我试过根据如何在不耗尽内存的情况下从sql查询中创建大型pandas数据帧?中提供的信息读取pandas by chucks中的数据,它没有做出任何改变。 造成这种情况的原因和补救方法是什么? 这些栏目包括:日期、年份、工作日、

  • 我刚开始穿弹力靴。这就是我要解决的问题。我有一个application.yml文件,它具有以下属性: 我尝试使用以下代码访问KinesisSenderFeature的值: 以及 PropertySourcesPlaceHolderConfigureer bean定义为: 是的,我确实看到了: 将Yaml中的列表映射到Spring Boot中的对象列表 Spring boot YAML配置未读取所有

  • 我在我的windows机器上设置了Elk堆栈,其中包含以下内容: Elasticserach Logstash Kibana 我的logstash.conf 我的日志文件。日志(Apache日志) 当我运行logstash时。conf它在elasticsearch中创建以下索引: 上面的索引为空,无法从我的日志文件中获取任何数据。请帮忙?我对麋鹿很陌生。 当我使用以下方法查询索引logstash-

  • 我对java librairie OpenCSV有问题。我没有读完我的CSV文件的所有行,我只读了第二行,我不知道为什么... 我的CSV文件: 我使用OpenCSV创建一个android列表,只有“Julie”“Julie”这一行被添加了3次...

  • PropKit工具类用来读取外部键值对配置文件,PropKit可以极度方便地在系统任意时空使用,配置文件的格式如下: userName=james email=no-reply@jfinal.com devMode=true 如下是 PropKit 代码示例: PropKit.use("config.txt"); String userName = PropKit.get("userName");

  • 您可以以如下各种方式加载或保存配置文件: 在 Burp 菜单中,您可以加载或保存所有用户级选项或项目级选项的配置文件。 在 Burp 的各个子工具的配置面板,您可以使用”选项(Options)”按钮来加载或保存该面板的配置。 在启动向导创建或打开项目时,您可以指定要需要载入的项目级的配置文件。 当您从命令行来启动 Burp 时,您可以使用命令行参数来指定要加载的项目级选项中的一个或多个配置文件。