我是靠谱客的博主 伶俐小鸭子,最近开发中收集的这篇文章主要介绍java 多线程读yaml_关于java:阅读yaml配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我一直试图将这个问题包围好几个小时,但是我做错了也没有多大意义。我试图用.yml文件在Java中创建一个Map对象。对于地图的原因,我不知道在"现在"下会出现多少/多少个孩子,所以我宁愿有一种动态的方式来创建一个地图对象。

下面是我的.yml文件。我希望"现在"下的键值对:

present:

now: LOCAL TESTING

later: testing

下面是我的配置类(所有注释掉的都是我尝试过的 - 以不同的组合方式):

//@Data

@Component

@EnableConfigurationProperties

@ConfigurationProperties(prefix ="present")

//@ConfigurationProperties

public class stat {

//@Getter

//@Data

@Value("${present}")

private Map present;

//private Map present = new HashMap();

}

我试着查看其他SO帖子,我觉得我理解它,但我的Spring Boot(v1.5.8)应用程序没有看到这个值。它一直为我抛出一个错误,或者map对象为null(或者没有被填充)。

我知道我可以从这个.yml文件读取值,因为如果我尝试使用下面的代码片段获取单个值,它可以工作:

@Data

@Value("${present.now}")

private String status; // String value"LOCAL TESTING"

以下是我尝试过的其他链接:

Spring Boot yaml配置字符串列表

如何将yml文件转换为java pojo

我错过了一些明显的东西吗谢谢!

所以我想出来了(对于那些后来遇到这个问题的人):

不需要@Value,并且不需要@ConfigurationProperties中的前缀参数。

然后你需要为你想要的字段设置一个getter方法 - 我认为Lombok库已经自动生成了这些但是我错了(可能需要稍后阅读更多相关信息 - @Setter和@Data将无法正常工作)。

所以看起来应该是这样的:

@Component

@EnableConfigurationProperties

@ConfigurationProperties

public class stat {

private Map present = new HashMap();

public Map getPresent() {

return present;

}

}

现在让我们给出一个更复杂的例子(嵌套地图)。 假设我的.yml文件如下所示:

parent:

present:

foo: dey, tok

bar: ar, jerbs

later:

foo: day, dok

mar: r, darbs

POJO看起来像这样:

@Component

@EnableConfigurationProperties

@ConfigurationProperties

public class stat {

private Map> parent = new HashMap>();

public Map> getParent() {

return parent;

}

}

另一个需要注意的关键是,您从中获取值的字段必须与变量名称匹配 - 如果您使用前缀可能无关紧要,但它仍然不适用于我。 希望这可以帮助。

您可以尝试创建一个POJO来表示您尝试读取的yml结构。

例如:

@Configuration

@ConfigurationProperties(prefix ="present")

@Data

public class Present {

private String now;

private String later;

}

感谢您的回复,但我正在尝试从此创建一个地图对象。 在原始问题中我没有提到的一点是我不知道孩子们(除了没有重复的键),说,我宁愿创建一个可以动态创建地图对象而不是硬编码这些值的POJO。

最后

以上就是伶俐小鸭子为你收集整理的java 多线程读yaml_关于java:阅读yaml配置的全部内容,希望文章能够帮你解决java 多线程读yaml_关于java:阅读yaml配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部