Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中定义字符串数组bean(使用XML配置)_Java_Spring - Fatal编程技术网

Java 如何在Spring中定义字符串数组bean(使用XML配置)

Java 如何在Spring中定义字符串数组bean(使用XML配置),java,spring,Java,Spring,我正在尝试定义一个类型为String[]的Springbean,现在可以找到一种方法来实现它。示例程序如下所示: @Component("sampleClass") public class SampleClass { @Value("#{someArrayId}") private String[] someArray; public void doWithArray() { System.out.println(Arrays.toString(som

我正在尝试定义一个类型为
String[]
的Springbean,现在可以找到一种方法来实现它。示例程序如下所示:

@Component("sampleClass")
public class SampleClass {
    @Value("#{someArrayId}")
    private String[] someArray;

    public void doWithArray() {
        System.out.println(Arrays.toString(someArray));
    }
}
SpringXML配置

<context:annotation-config />
<context:component-scan base-package="com.demo.spring" />

<util:list id="someArrayId">
    <array>
        <value>Tiger</value>
        <value>Lion</value>
    </array>
</util:list>
我有点理解Spring在抱怨什么,但我不知道如何解决它

如果有人能帮忙,我将不胜感激


谢谢,NN我不知道这样做是否有原因,但是这个配置

<util:list id="someArrayId">
    <array>
        <value>Tiger</value>
        <value>Lion</value>
    </array>
</util:list>
在这种情况下,您可以修改要用注释的字段

@Value("#{someArrayId.toArray(new java.lang.String[0])}")
Spring的EL解析器将能够解析它并执行相应的方法,该方法将
列表
转换为
字符串[]

或者,删除
@Value
注释并添加
@Resource
注释方法

@Resource(name = "someArrayId")
private void init(List<String> bean) {
    this.someArray = bean.toArray(new String[0]);
}
@Resource(name=“someArrayId”)
私有void init(列表bean){
this.someArray=bean.toArray(新字符串[0]);
}
我发现这种清洁剂更具描述性。

像这样试试

@Component("sampleClass")
public class SampleClass {
    @Value("#{someArrayId.toArray(new String[0])}")
    private String[] someArray;
    ...

<util:list id="someArrayId">
    <value>Tiger</value>
    <value>Lion</value>
</util:list>
@组件(“sampleClass”)
公共类样本类{
@值(“#{someArrayId.toArray(新字符串[0])}”)
私有字符串[]数组;
...
老虎
狮子

只需定义数组,而不是
列表
。您也可以将其作为配置注入,以减少歧义。这里需要注意的另一点是数组的
值类型

<bean id="sampleClass" class="somePackage.SampleClass">
    <property name="someArray">
        <array value-type="java.lang.String">
            <value>Tiger</value>
            <value>Lion</value>
        </array>
    </property>
</bean>

老虎
狮子

很明显
util:list
用于创建
列表
。您正在尝试将其分配给
字符串[]
。您真的需要数组吗?是的。我无法在此公开的实际用例需要数组。您好,首先感谢您的帮助;
@Value(#{someArrayId.toArray(new java.lang.String[0]))
是正确答案。现在,我理解了您的@Resource观点,我将进行类似的更改。此线程现在可以关闭。非常感谢您的回答。这有助于节省我的时间。我现在可以关闭此线程。
@Component("sampleClass")
public class SampleClass {
    @Value("#{someArrayId.toArray(new String[0])}")
    private String[] someArray;
    ...

<util:list id="someArrayId">
    <value>Tiger</value>
    <value>Lion</value>
</util:list>
<bean id="sampleClass" class="somePackage.SampleClass">
    <property name="someArray">
        <array value-type="java.lang.String">
            <value>Tiger</value>
            <value>Lion</value>
        </array>
    </property>
</bean>