【发布时间】:2020-11-20 08:02:36
【问题描述】:
情况
我在我的班级中使用@PropertySource 和@Value,以便将值从属性文件注入到地图中。 代码如下:
@Value("#{${global.fieldsSubset}}")
private final Map<String, Set<String>> fieldsSubset = new HashMap<>();
如果找不到所需的属性,我想将地图初始化为空地图。为此,我将代码更改为:
@Value("#{${global.fieldsSubset : {:}}}")
private final Map<String, Set<String>> fieldsSubset = new HashMap<>();
问题
默认行为正常,当找不到属性时地图为空,但当属性存在时,默认值仍然保留,地图始终为空。
这是全班:
@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'}\
}
【问题讨论】:
-
可以显示属性值吗?
-
当然,我刚刚添加到描述中
-
@Nel 你没有找到解决办法吗?