Java 如何将application.yml中的映射注入Spring Boot中的字段?
这是关于这个问题的 在这个问题上,他们有Java 如何将application.yml中的映射注入Spring Boot中的字段?,java,spring,spring-boot,yaml,Java,Spring,Spring Boot,Yaml,这是关于这个问题的 在这个问题上,他们有 info: build: artifact: ${project.artifactId} name: ${project.name} description: ${project.description} version: ${project.version} 为了将其映射到java代码中,他们建议使用@ConfigurationProperties注释。此注释的问题是,您必须创建一个新类,然后在
info:
build:
artifact: ${project.artifactId}
name: ${project.name}
description: ${project.description}
version: ${project.version}
为了将其映射到java代码中,他们建议使用@ConfigurationProperties
注释。此注释的问题是,您必须创建一个新类
,然后在其上添加此注释
但是,我是否可以像@Value
注释那样直接将其放到单个字段中
说我需要它,就像这样:
// Someannotation or any other lean and clean way to get this
@Someannotation("${info}")
private Map<String, Object> map;
//Someannotation或任何其他简洁明了的方法
@Someannotation(“${info}”)
私人地图;
上面的代码应该为我提供一个映射,其中键是build
,值是一些对象,带有诸如artifact、name等字段(当然,如果这样做有效,我将为此创建一个POJO,而不是将其作为普通对象)
注意:@ConfigurationProperties
在字段上不起作用,这就是为什么我想看看是否有更精简、更干净的方法来做到这一点
另外,我对使用@ConfigurationProperties
并创建一个新类很在行,但我只是想看看我是否错过了一个更简单的方法来实现这一点,而不必创建一个新类。我知道的唯一方法是以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;
@Value(“#{${app.collection.map.string.to.integer}”)
私人地图;StringToInteger;
从第节中,使用Spring的@Value注入贴图当然,我知道这一点,因此提出了这个问题。我想知道是否有另一种方法类似于@Value
,而不必创建新类,然后在其上插入@ConfigurationProperties
。