从属性文件中读取列表,并使用Spring注释@Value加载
从属性文件中读取列表,并使用Spring注释@Value加载
我想在一个.properties文件中列出值的列表,例如:
my.list.of.strings=ABC,CDE,EFG
并直接在我的类中加载它,例如:
@Value("${my.list.of.strings}") private List myList;
据我所知,做这件事的另一种替代方法是将其放置在Spring配置文件中,并将其作为bean引用进行加载(如果我错了,请纠正我),例如
ABC CDE EFG
但有没有什么方法可以做到这一点?使用.properties文件?
PS:如果可能,我想在没有任何自定义代码的情况下完成此操作。
admin 更改状态以发布 2023年5月24日
从Spring 3.0开始,您可以在applicationContext.xml
(或您配置的地方)中添加以下内容:
如Dmitry Chornyi在评论中指出的那样,基于Java的配置如下:
@Bean public ConversionService conversionService() { return new DefaultConversionService(); }
这将启用新的配置服务,支持将String
转换为Collection
类型。
如果您没有激活此配置服务,Spring将使用其传统的属性编辑器作为配置服务,这些属性编辑器不支持此类转换。
将其他类型的值转换为集合也可以工作:
@Value("${my.list.of.ints}") private ListmyList
将与以下行一起使用:
my.list.of.ints= 1, 2, 3, 4
没有空格的问题,ConversionServiceFactoryBean
会处理它。
在Spring应用程序中,通常为每个Spring容器(或ApplicationContext)配置一个
ConversionService
实例。该ConversionService
将被Spring捕获,然后在框架需要执行类型转换时使用。
[...]
如果没有向Spring注册ConversionService
,原始的基于PropertyEditor的系统将被使用。