gpt4 book ai didi

java - Spring boot YAML 配置未读取所有值

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:58 27 4
gpt4 key购买 nike

我正在尝试在 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 配置的 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()。

我在这里做错了什么?

最佳答案

我发现您正在使用公共(public)非内部类进行嵌套配置,因此您应该添加 @NestedConfigurationProperty :

public class Scenes {

@NestedConfigurationProperty
private Sunstatus sunstatus;

@NestedConfigurationProperty
private Disable disable;

Nested properties

You can use the @NestedConfigurationProperty annotation on a field to indicate that a regular (non-inner) class should be treated as if it were nested.

因此,要么添加注释(如果您打算在其他地方使用这些类),要么将它们设置为public static

关于java - Spring boot YAML 配置未读取所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42145946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com