我需要从提供逗号分隔整数的属性文件中加载java.util.List<Integer>
。
ids = 1230, 34, 2587, 31
到目前为止,我已尝试使用上述内容的identifiers.properties
文件并将其加载到带有spring xml文件的bean中:
<bean id="identifiersList" class="MyIdHolderClass">
<property name="idsList" value="${ids}"/>
</bean>
但是我得到一个错误,因为java.util.List<Integer> ids
无法存储String,这正是Spring试图放入的。
有没有办法从属性文件中弹出一个数字列表?
仅供上下文:我想要实现的是从属性文件加载Map<Integer, Float>
。但是没有加载它,我决定在加载密钥和加载值时拆分它。 (它最终将作为告诉每个产品标识符的价格标签的地图)。
答案 0 :(得分:2)
尝试将此bean添加到您的配置中:
@Bean
public ConversionService conversionService() {
return new DefaultConversionService();
}
它将添加支持将String转换为Collection:
请注意,DefaultConversionService会自动注册适合大多数环境的转换器。这包括集合转换器,标量转换器以及基本的对象到字符串转换器。可以使用DefaultConversionService类上的静态addDefaultConverters方法向任何ConverterRegistry注册相同的转换器。
参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html
答案 1 :(得分:0)
我认为你应该注入这样的属性:
<bean id="identifiersList" class="MyIdHolderClass">
<property name="idsList" value="#{'${ids}'.split(',')}"/>
</bean>