gpt4 book ai didi

spring - 使用 Spring 的 @Value 注入(inject) Map>

转载 作者:行者123 更新时间:2023-12-04 19:26:49 24 4
gpt4 key购买 nike

我有一个属性文件,其中包含一个映射,其中每个键都有多个值,如下所示

//properties.yml
myMap:
key1: value1, value2
key2: value1, value2, value3

很容易阅读 myMap使用 Spring 属性类如下:
@Configuration
@ConfigurationProperties
public class MyConfiguration {
private Map<String, List<String>> myMap;

public Map<String, List<String>> getMyMap() {
return myMap;
}

public void setMyMap(Map<String, List<String>> myMap) {
this.myMap = myMap;
}
}

然而,这感觉就像一个简单任务的大量代码。我想知道是否有一种方法可以使用 Spring 的 @Value 来实现相同的目标注解?我试图让它工作但没有成功,尝试像
@Value("${myMap}")
private Map<String, List<String>> myMap;

我想也许它需要 SPEL 但我不确定如何

最佳答案

要使用 @Value 注入(inject) Map,您可以执行以下操作(但也许您需要修改 YAML):

@Value("#{${myMap}}")
private Map<String, List<String>> myMap;

但是,鼓励使用@ConfigurationProperties 而不是@Value(特别是如果您使用YAML 格式,Spring boot 使用SnakeYAML 来解析YAML 文件)

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties

加载到 map 时不需要 setter :
@ConfigurationProperties
public class MapProperties {

private Map<String, List<String>> myMap = new HashMap<>();

public Map<String, List<String>> getMyMap() {
return this.myMap;
}
}

关于spring - 使用 Spring 的 @Value 注入(inject) Map<String, List<String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com