繁体   English   中英

如何将 application.yml 中的 map 注入 Spring 引导中的字段?

[英]How to inject a map from application.yml into a field in Spring Boot?

这是参考这个问题。

Spring 引导 - 从 application.yml 注入 map

在那个问题上,他们有

info:
   build:
      artifact: ${project.artifactId}
      name: ${project.name}
      description: ${project.description}
      version: ${project.version}

将 map 放入他们的 java 代码中,他们建议使用@ConfigurationProperties注释。 这个注解的问题是你必须创建一个New Class然后在它上面添加这个注解。

但是,我可以像@Value注释那样直接将它放到单个字段上吗?

说我在这里需要它:

// Someannotation or any other lean and clean way to get this
@Someannotation("${info}")
private Map<String, Object> map;

上面的代码应该给我一个 map ,其中键是build的,值是some Object with fields like artifact, name etc (当然,如果可行,我将为此创建一个 POJO,而不是将其保留为普通对象)。

注意: @ConfigurationProperties不适用于字段,这就是为什么我想看看是否有更精简和更清洁的方法来做到这一点。

PS 另外,我很喜欢使用@ConfigurationProperties并创建一个新的 class,但我只是想看看我是否missing out一种更简单的方法来做到这一点,而不必完全创建一个新的 class。

我知道这样做的唯一方法是以 JSON 格式定义值部分:

app.collection.map.string.to.integer={one:"1", two:"2", three:"3"}

然后注入

@Value("#{${app.collection.map.string.to.integer}}")
private Map<String, Integer> mapStringToInteger;

来自https://relentlesscoding.com/2018/09/09/spring-basics-dynamically-inject-values-with-springs-value/使用 Spring 的 @Value 注入地图部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM