如何使用Spring @Value从Java属性文件填充HashMap
是否可以使用Spring @Value将值从属性文件映射到HashMap。
目前,我有这样的事情,映射一个值不是问题。但是我需要在HashMap到期中映射自定义值。这样的事情可能吗?
@Service@PropertySource(value = "classpath:my_service.properties")
public class SomeServiceImpl implements SomeService {
@Value("#{conf['service.cache']}")
private final boolean useCache = false;
@Value("#{conf['service.expiration.[<custom name>]']}")
private final HashMap<String, String> expirations = new HashMap<String, String>();
属性文件:“ my_service.properties”
service.cache=trueservice.expiration.name1=100
service.expiration.name2=20
是否可以像这样的键映射:值集
name1 = 100
name2 = 20
回答:
你可以使用类似于SPEL json的语法在属性文件中编写一个简单的映射或列表映射。
simple.map={'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}map.of.list={\
'KEY1': {'value1','value2'}, \
'KEY2': {'value3','value4'}, \
'KEY3': {'value5'} \
}
我使用\
多行属性来提高可读性
然后,在Java中,你可以@Value
像这样自动访问和解析它。
@Value("#{${simple.map}}")Map<String, String> simpleMap;
@Value("#{${map.of.list}}")
Map<String, List<String>> mapOfList;
在此处${simple.map}
,@Value
从属性文件获取以下字符串:
"{'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}"
然后,将其评估为好像已内联
@Value("#{{'KEY1': 'value1', 'KEY2': 'value3', 'KEY3': 'value5'}}")
以上是 如何使用Spring @Value从Java属性文件填充HashMap 的全部内容, 来源链接: utcz.com/qa/435198.html