开发手册 欢迎您!
软件开发者资料库

Spring - Injecting Collection

Spring Injecting Collection - 从基本到高级概念的简单简单步骤学习Java Spring Framework 4.1.6版,其中包括概述,体系结构,环境设置,Hello World示例,控制反转(IoC),依赖注入,bean定义,范围,bean生命周期,后处理器,定义继承,依赖注入,内部bean,注入集合,自动装配,注释,基于Java的配置,事件处理,自定义事件,不同模块,面向方面编程(AOP),数据库访问(JDBC) ,事务管理,Web MVC框架,使用Log4j进行日志记录,Web流,异常处理,EJB集成和发送电子邮件,Spring面试问题,答案,测验和在线模拟测试。

您已经了解了如何使用< property>的 ref 属性使用属性和对象引用来配置基本数据类型Bean配置文件中的标记.这两种情况都涉及将单值传递给bean.

现在,如果要传递多个值,如List Collection类型,如List,Set,Map和Properties,该怎么办?为了处理这种情况,Spring提供了四种类型的集合配置元素,如下所示:

Sr.No元素&描述
1

< list>

这有助于接线,即注入值列表,允许重复.

2

< set>

这有助于连接一组值但不重复.

3

< map>

这可用于注入一组名称 - 值对,其中name和value可以是任何类型.

4

< props>

这可用于注入一组名称 - 值对,其中名称和值都是字符串.

您可以使用< list>或者< set>连接java.util.Collection或数组的任何实现.

您将遇到两种情况(a)传递集合的直接值和(b) )将bean的引用作为集合元素之一传递.

示例

让我们使用一个可用的Eclipse IDE并执行以下操作创建Spring应用程序的步骤 :

步骤描述
1创建一个名为 SpringExample 的项目,并在创建的 src 文件夹下创建一个包 com.it1352 project.
2使用所需的Spring库添加添加外部JAR 选项,如 Spring Hello World示例章节中所述.
3创建Java类 JavaCollection ,和 MainApp com.it1352包下.
4 src 文件夹下创建Beans配置文件 Beans.xml .
5最后一步是创建所有Java文件的内容和Bean配置文件并运行应用程序,如下所述.

以下是 JavaCollection.java的内容 file :

package com.it1352; import java.util.*;public class JavaCollection {   List addressList;   Set  addressSet;   Map  addressMap;   Properties addressProp;   // a setter method to set List   public void setAddressList(List addressList) {      this.addressList = addressList;   }      // prints and returns all the elements of the list.   public List getAddressList() {      System.out.println("List Elements :"  + addressList);      return addressList;   }      // a setter method to set Set   public void setAddressSet(Set addressSet) {      this.addressSet = addressSet;   }      // prints and returns all the elements of the Set.   public Set getAddressSet() {      System.out.println("Set Elements :"  + addressSet);      return addressSet;   }      // a setter method to set Map   public void setAddressMap(Map addressMap) {      this.addressMap = addressMap;   }      // prints and returns all the elements of the Map.   public Map getAddressMap() {      System.out.println("Map Elements :"  + addressMap);      return addressMap;   }      // a setter method to set Property   public void setAddressProp(Properties addressProp) {      this.addressProp = addressProp;   }      // prints and returns all the elements of the Property.   public Properties getAddressProp() {      System.out.println("Property Elements :"  + addressProp);      return addressProp;   }}

以下是 MainApp.java 文件的内容 :

package com.it1352; import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {   public static void main(String[] args) {      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");      JavaCollection jc=(JavaCollection)context.getBean("javaCollection");      jc.getAddressList();      jc.getAddressSet();      jc.getAddressMap();      jc.getAddressProp();   }}

以下是配置文件 Beans.xml ,其中包含所有类型的配置of collections :

                                             INDIA            Pakistan            USA            USA                                                INDIA            Pakistan            USA            USA                                                                                                                                          INDIA            INDIA            Pakistan            USA            USA                  

完成源和bean配置文件的创建后,让我们运行应用程序.如果您的应用程序一切正常,它将打印以下消息 :

List Elements :[INDIA, Pakistan, USA, USA] Set Elements :[INDIA, Pakistan, USA] ap Elements :{1 = INDIA, 2 = Pakistan, 3 = USA, 4 = USA} Property Elements :{two = Pakistan, one = INDIA, three = USA, four = USA}

注入Bean引用

以下Bean定义将帮助您了解如何将bean引用注入为集合的元素之一.即使你可以将引用和值混合在一起,如下面的代码片段和减号所示;

                                                               Pakistan                                                                              Pakistan                                                                                                

要使用上面的bean定义,你需要定义你的setter方法,使它们也应该能够处理引用.

注入空字符串值和空字符串值

如果需要将空字符串作为值传递,则可以按以下方式传递它;减去;

   

前面的例子相当于Java代码:exampleBean.setEmail("")

如果你需要传递一个NULL值,然后你可以传递它如下 :

   

前面的示例等同于Java代码:exampleBean.setEmail(null)