如何使用Spring将数据传递给方法

时间:2015-02-27 12:12:35

标签: java spring spring-mvc

我有一个Reader类看起来像这样

public class Reader {

    public void read(List<String> filesToRead) {
        for (String file : filesToRead) {
            System.out.println(file);
        }
    }
}

我的App课程如下

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

        Reader reader = (Reader) context.getBean("reader");

        reader.read(LIST OF STRINGS TO BE PASSED HERE);
    }
}

My Beans.xml看起来像这样

<bean id="reader" class="com.mypackage.Reader"/>

我想知道是否可以使用Spring将字符串列表传递给read(List<String> files)方法。我宁愿在Spring中执行此操作而不是在代码中创建字符串列表,因为字符串列表将来会发生变化,因此我宁愿不修改代码,只需触摸一些Spring文件。

2 个答案:

答案 0 :(得分:1)

您可以定义java.util.ArrayList类型的Spring bean,就像这样

<bean id="files" class="java.util.ArrayList">
    <constructor-arg>
        <list>
            <value>fiel1</value>
            <value>fiel2</value>
            <value>fiel3</value>
        </list>
    </constructor-arg>
</bean>

在代码中使用该bean

Reader reader = (Reader) context.getBean("reader");
List<String> files = (List<String>)context.getBean("files");
reader.read(files);

答案 1 :(得分:1)

导入spring util命名空间。然后,您可以将列表bean定义为

<util:list id="myList" value-type="java.lang.String">
    <value>foo</value>
    <value>bar</value>
</util:list>

现在您可以将此mylist注入或自动装入reader bean。否则考虑使用

org.springframework.beans.factory.config
Class MethodInvokingFactoryBean