如何从spring属性文件加载数字列表

时间:2017-02-21 17:02:54

标签: java spring properties

我需要从提供逗号分隔整数的属性文件中加载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>。但是没有加载它,我决定在加载密钥和加载值时拆分它。 (它最终将作为告诉每个产品标识符的价格标签的地图)。

2 个答案:

答案 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>