[英]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.