【问题标题】:Dynamic injection of collections into Spring managed beans将集合动态注入 Spring 托管 bean
【发布时间】:2015-10-08 16:08:00
【问题描述】:

如何动态地将集合注入到 Spring bean 中。 我所知 我的 Author 类示例

import java.util.List;
public class Author {
private String name;
private List<String> listOfBooks;

public Author(String name, List<String> listOfBooks) {
    this.name = name;
    this.listOfBooks = listOfBooks;
}
public Author() {
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public List<String> getListOfBooks() {
    return listOfBooks;
}

public void setListOfBooks(List<String> listOfBooks) {
    this.listOfBooks = listOfBooks;
}
 }

我的 bean id 是:

   <bean id="authorID" class="com.test.Author">
   </bean>

还有一些我在 Authors 类中用作 @AutoWired bean 的地方。 如果我想将书籍添加到变量“listOfBooks”中。 我该如何添加它。是通过使用对 Authors 对象的引用并通过访问 getListOfBooks() 方法然后添加值来实现的。或者这种方法有什么最好的方法。 谢谢。

【问题讨论】:

  • authorID bean 的创建将失败,只存在一个非默认构造函数,并且 bean 定义不提供名称和 listOfBooks 的值。

标签: java spring spring-mvc javabeans


【解决方案1】:

一些更详细的解释:

 <property name="bookList">
     <list>
        <value>Java</value>
        <value>C++</value>
     </list>
  </property>

这样我们为 java.util.List 传递 bean 引用

记住:要使用上面的 bean 定义,您需要以这样一种方式定义您的 setter 方法,以便它们也应该能够处理引用。

 ApplicationContext context = 
             new ClassPathXmlApplicationContext("YourBeans.xml");

      Author a=(Author)context.getBean("authorID");

      a.getListOfBooks();

您的 Getter 和 Setter 将是:

public void setListOfBooks(List<String> bookList) {
    this.listOfBooks = bookList;
}

也相应地更改吸气剂。

谢谢

【讨论】:

    【解决方案2】:
     <property name="addressList">
         <list>
            <value>Book1</value>
            <value>Book2</value>
            <value>Book3</value>
            <value>Book4</value>
         </list>
      </property>
    

    在你的上下文文件中。

    更多信息请看post

    【讨论】:

      【解决方案3】:

      Spring Injecting Collection 在这里您可以了解注入所有类型的集合 [list,set,map] 和 array,它的值作为原语/参考

      【讨论】:

        猜你喜欢
        • 2014-07-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-12
        • 2011-07-13
        • 2023-04-07
        • 2013-01-23
        相关资源
        最近更新 更多