当前位置: 首页 > 面试题库 >

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

宿景曜
2023-03-14
问题内容

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

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

machines=A,B

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

machines=B,C,D

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

像这样的东西:

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

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

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


问题答案:

你可能想看看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”的值是从属性文件中加载的。

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



 类似资料:
  • 我在spring项目中使用基于注释的配置。我使用@Autowired注入类,这些类用适当的注释进行注释,比如@Service、@Component、@Repository、@Controller。我这里有两个问题: 不知怎的,我是否能得到一个spring BeanFactory的实例

  • 我正计划将一个web应用程序从使用JSF托管bean转换为使用CDI托管bean。我知道我需要做以下工作: 在WEB-INF中添加空beans.xml文件。 将所有JSF@ManagedBean替换为CDI@Named Annotations。 用CDI或OmniFaces作用域注释替换所有JSF作用域注释。 将所有JSF@ManagedProperty替换为CDI@Inject Annotati

  • 我在演示应用程序中使用了JSF2+Spring3.1+Hibernate4,我想使用注释来创建会话工厂,但是我的DAO类没有在Jsf托管Bea类中初始化,所以我得到了空指针异常。我的ApplicationContext.xml 现在,在Managedbean方法中,DAO对象为null,我得到的是null指针异常

  • 我试图只使用注释创建Spring bean。我无法从属性文件加载@Bean类的值。 下面是我的代码: 知道我做错了什么吗?

  • 我有一个托管bean,它有以下方法: 因此,方法将打开一个对话框,并传递给它两个参数(和)。 然后命令按钮将从调用方法: 但我在行中得到了一个NullPointerException: 所以我在这一行上附加了一个dubugger,我得到了这个: 您可以注意到,变量具有空值,而具有字符串值。

  • 问题内容: 我想知道如何将JSF托管的bean属性传递给JavaScript函数。 像这样: 问题答案: 这不是JSF变量的“传递”。这只是打印JSF变量,就好像它们是JavaScript变量/值一样。您知道,JSF和JS根本不同步运行。JSF在Web服务器中运行,并生成HTML/ CSS / JS代码,一旦到达该代码,该代码又在Webbrowser中运行。 您的具体问题很可能是由于您以这种方式生