gpt4 book ai didi

java - Spring @Value - 有没有办法分配默认的空 map ?

转载 作者:行者123 更新时间:2023-12-03 20:50:24 26 4
gpt4 key购买 nike

情况
我在我的类中使用@PropertySource 和@Value,以便将值从属性文件注入(inject)到 map 中。
代码如下:

@Value("#{${global.fieldsSubset}}")
private final Map<String, Set<String>> fieldsSubset = new HashMap<>();
如果找不到所需的属性,我想将 map 初始化为空 map 。为此,我将代码更改为:
@Value("#{${global.fieldsSubset : {:}}}")
private final Map<String, Set<String>> fieldsSubset = new HashMap<>();
问题
默认行为正常工作,当找不到属性时 map 为空,但当属性存在时,默认值仍然存在, map 始终为空。
这是整个类(class):
@Configuration
@PropertySource(value = "classpath:global.properties", ignoreResourceNotFound = true)
@RefreshScope
public class FieldsSubsetsProperties {
@Value("#{${global.fieldsSubset:{:}}}")
private final Map<String, Set<String>> fieldsSubset = new HashMap<>();

public Map<String, Set<String>> getFieldsSubset() {
return fieldsSubset;
}

public Set<String> getSubsetOfFieldsNames(String subsetName) {
return fieldsSubset.getOrDefault(subsetName,
Collections.emptySet());
}
}
这是属性值:
global.fieldsSubset = {\
'channel-basic':{'id', 'number', 'name'}, \
'channel':{'id', 'number', 'name', 'description', 'status'}\
}

最佳答案

试试这个:

@Value("#{${global.fieldsSubset:{T(java.util.Collections).emptyMap()}}}")
private final Map<String, Set<String>> fieldsSubset = new HashMap<>();

关于java - Spring @Value - 有没有办法分配默认的空 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63175480/

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