当前位置: 首页 > 知识库问答 >
问题:

Spring:将字符串列表的所有值注入bean

马冯浩
2023-03-14

我想使用带有xml配置的属性文件注入一个列表值。

        <property name="headerOfFile">
            <util:list id="headerOfFileList" value-type="java.lang.String">
                <value>headerA</value>
                <value>headerB</value>
            </util:list>
        </property>

我想使用xml bean配置通过属性文件注入我的列表值。我知道使用Java我们可以这样做:

@Value("#{'${my.list.of.header.strings}'.split(',')}") 
private List<String> headerOfFile;

假设我的属性文件正确加载了以下内容:

my.list.of.header.strings=headerA,headerB

但我的要求是使用带有属性文件的xml bean来完成。

共有3个答案

荆煌
2023-03-14

如果您想将属性的List注入特定bean,您可以使用@ConfigurationProperties,这就像现在使用xmlconfig并将HeaderOfFileList注入HeaderOfFilebean

@ConfigurationProperties(prefix="my")
public class Config {

    private List<String> headerOfFileList = new ArrayList<String>();

    public List<String> getServers() {
       return this.servers;
     }
 }

应用属性

my.headerOfFileList[0]=headerA
my.headerOfFileList[1]=headerB

应用yml公司

my:
    headerOfFileList:
         - headerA
         - headerB
梁宏才
2023-03-14

使用setter方法:

private List<String> headerOfFile;

@Value("${my.list.of.header.strings}")
private void setHeaderOfFile(String values) {
    this.headerOfFile = Arrays.asList(values.split(','));
}
丁钟展
2023-03-14

Spring EL也适用于XML。您所需要的就是在bean的属性value属性中提供相同的表达式。

<property name="headerOfFile" value="#{'${my.list.of.header.strings}'.split(',')}">
</property>

这假设您已启用相应的属性解析配置

<context:property-placeholder location="your_config.properties" />
<context:annotation-config />

请注意,表达式中不需要拆分。Spring已经支持将逗号分隔的值转换为现成的列表/数组。你可以使用

<property name="headerOfFile" value="${my.list.of.header.strings}">
</property>

您将需要由提供的默认转换服务

<bean id="conversionService"
    class="org.springframework.context.support.ConversionServiceFactoryBean" />
 类似资料:
  • 问题内容: 我想将字符添加到字符串中,但要确保最终列表中的所有字母都是 唯一的 。 例如:→ 现在,我当然想到了两种解决方案。一种是使用,它将字符与ASCII码映射。因此,每当我遇到一个字母时,它都会将索引设置为。之后,我将扫描列表并附加所有已设置的列表。时间复杂度为 O(n) 。 另一个解决方案是使用和遵循相同的过程。映射完每个字符后,我将对字典中的每个键进行操作。这也将具有 线性 运行时间。

  • 本文向大家介绍Python-将字符串插入列表中所有项目的开头,包括了Python-将字符串插入列表中所有项目的开头的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我们需要在列表中所有项目的开头输入字符串。  例如:给定字符串=“ Tutorials_Point”,并且List包含多个元素,例如“ 1”,“ 2”等。因此,在此我们需要在“ 1”,“ 2”之前添加Tutorials_Point

  • 所以,我知道这可能是一个非常愚蠢的问题,我是一个初学者,试图学习Java基础知识,我有一个字符串数组的问题,我不太明白。当我尝试将单词输入到字符串数组中,并且单词的数量由用户设置(例如5)时,我总是可以少输入一个单词(例如4而不是5)。我的代码在下面。

  • 问题内容: 这是我当前的XML。如果只列出一个列表,一切都会好起来的。 问题是需要一个字符串数组。 春天怎么办? 问题答案: 您应该使用: 一个数组可以包含多个内部bean,ref,collection或value元素。即使当被定义为例如值类型为Object的映射的值时,此配置元素也始终会导致一个数组。 您还可以指定要传递的值类型: 值类型 嵌套值的默认Java类型。必须是完全合格的班级名称。

  • 问题内容: 在Python中,我想将列表中的所有字符串转换为整数。 所以,如果我有: 我该如何做: 问题答案: 使用功能(在Python 2.x中): 在Python 3中,您需要将结果从转换为列表:

  • 在过去,我使用Spring的XML配置连接bean,在这种情况下,我可以这样做(假设bean有属性的公共setter): 当使用基于注释的配置时,是否存在类似的情况?