如何将映射从application.yml注入到Spring Boot的字段中?

这是关于这个问题的参考。

Spring Boot - inject map from application.yml

在这个问题上,他们有

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

要将其映射到他们的Java代码中,建议使用@ConfigurationProperties批注。此注释的问题在于,您必须创建一个New Class,然后在其顶部添加此注释。

但是我可以像@Value注释一样直接将其放在单个字段上吗?

说我在这里需要这样:

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

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

注意:@ConfigurationProperties在字段上不起作用,这就是为什么我要查看是否有更精简的方法来执行此操作。

P.S。同样,我可以使用@ConfigurationProperties并创建一个新类,但是我只是想看看我是否missing out正在以一种更简单的方式来做到这一点,而不必完全创建一个新类。

mfkkyv123 回答:如何将映射从application.yml注入到Spring Boot的字段中?

我知道的唯一方法是以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注入地图

本文链接:https://www.f2er.com/3163817.html

大家都在问