本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
终于写到了三位数,现在基本人已经手脚发软了。
提问:从属性文件中读取列表并使用spring注释@Value加载
我想在.properties文件中放一个value列表,例如
my.list.of.strings=ABC,CDE,EFG
并且将他们直接加载进我的类。
@Value("${my.list.of.strings}")
private List<String> myList;
据我了解,执行此操作的另一种方法是将其保存在spring config文件中,并将其作为Bean引用加载(如果我说错了,请更正我),即
<bean name="list">
<list>
<value>ABC</value>
<value>CDE</value>
<value>EFG</value>
</list>
</bean>
但是有什么其他办法吗? 使用.properties文件? ps:如果可能的话,我希望没有任何自定义代码。
回答1:
从Spring 3.0开始,您可以添加如下一行
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean" />
到您的applicationContext.xml(或您在其中配置的东西)
@Bean
public ConversionService conversionService() {
return new DefaultConversionService();
}
这将激活新的配置服务,该服务支持将String转换为Collection类型。 如果您不激活此配置服务,Spring将回退其旧版属性编辑器作为配置服务,这些编辑器不支持这种转换。
转换为其他类型的集合也可以:
@Value("${my.list.of.ints}")
private List<Integer> myList
可以成功的利用这行数据
my.list.of.ints= 1, 2, 3, 4
那里的空格没有问题,ConversionServiceFactoryBean会处理它。
在Spring应用程序中,通常会为每个Spring容器(或ApplicationContext)配置一个ConversionService实例。 Spring会选择该ConversionService,然后在框架需要执行类型转换时使用它。 [...]如果未向Spring注册任何ConversionService,则使用原始的基于PropertyEditor的系统。