一尘不染

将动态属性列表读取到spring托管bean中

spring

我一直在搜索,但找不到这些步骤。

我有一个包含以下内容的属性文件:

machines=A,B

我有一个类似的文件,但是在machines元素中具有不同数量的成员,如下所示:

machines=B,C,D

我的问题是如何以一种通用方式将这个可变长度的机器变量加载到我的spring配置中的bean中?

像这样的东西:

<property name="machines" value="${machines}"/>

机器是我的Java代码中的数组或列表。我可以定义它,但是我想知道如何做到这一点。

基本上,我宁愿让spring进行解析并将每个值粘贴到列表元素中,而不是我不得不写一些在完整的机器字符串中读取的内容并自己进行解析(使用逗号分隔符)以将每个值放入数组中或清单。有没有一种简单的方法可以做到这一点,而我却没有呢?


阅读 319

收藏
2020-04-18

共1个答案

一尘不染

你可能想看看Spring的StringUtils类。它有许多有用的方法将逗号分隔的列表转换为Set或String数组。你可以使用这些实用程序方法中的任何一种,使用Spring的工厂方法框架将已解析的值注入到bean中。这是一个例子:

<property name="machines">
    <bean class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToSet">
        <constructor-arg type="java.lang.String" value="${machines}"/>
    </bean>
</property>

在此示例中,“machines”的值是从属性文件中加载的。

如果现有的实用程序方法不能满足你的需求,那么创建自己的实用程序就非常简单。此技术使你可以执行任何静态实用程序方法。

2020-04-18