我正在尝试将.properties文件中的地图加载到HashMap
属性文件具有以下内容:
try.map= one=1,\
two=2
代码:
@org.springframework.beans.factory.annotation.Value("${try.map}")
HashMap<String, String> tryMap;
将属性加载到地图会导致:
java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [java.util.HashMap]: no matching editors or conversion strategy found
有关如何为此创建映射策略的任何想法吗?
答案 0 :(得分:1)
我也遇到了这个错误。如果要解决此问题而无需付出太多努力,只需正确检查导入即可。 如果导入错误的文件,通常会出现此错误。如果您遇到这种情况,我认为您正在文件中导入错误的HashMap。检查它应该是java.util.HashMap。
答案 1 :(得分:0)
没有默认转换器。因此,您必须编写自己的转换器并将其注册到conversationService。
这是一个基于注释的示例:
@Bean(name="conversionService")
public static ConversionService getConversionService(){
ConversionServiceFactoryBean conversionServiceFactoryBean = new ConversionServiceFactoryBean();
Set<Converter<?,?>> converters = new HashSet<Converter<?,?>>();
converters.add(new StringToHashMapConverter());
conversionServiceFactoryBean.setConverters(converters);
conversionServiceFactoryBean.afterPropertiesSet();
return conversionServiceFactoryBean.getObject();
}
转换器:
import java.util.HashMap;
import org.springframework.core.convert.converter.Converter;
public class StringToHashMapConverter implements Converter<String,HashMap> {
@Override
public HashMap convert(String paramS) {
//do the coversion
}
}
答案 2 :(得分:0)
这对我有用:
try.map= {\
one: 1,\
two: 2\
}
代码:
@org.springframework.beans.factory.annotation.Value("#{${try.map}}")
HashMap<String, String> tryMap;
是的,语法很奇怪。
此SO帖子具有更多信息: How to fill HashMap from java property file with Spring @Value