• Spring注入集合


    Spring注入集合

     

    目录

    Spring注入集合

     

    注入Bean引用:

     

    注入null和空字符串的值


     

     

    您已经看到了如何配置基本数据类型使用value属性和使用标签的ref属性在你的bean配置文件中的对象引用。这两种情况下处理过单值到一个bean。

    现在什么样,如果你想通过多元价值,如Java Collection类型List, Set, Map 及 Properties。要处理这种情况,Spring提供了四种类型的如下集合的配置元素:

    元素描述
    这有助于注入值列表List配线,使重复。
    这有助于在配线的一组值,但不能重复。
    这可用于注入的名称 - 值对,其中名称和值可以是任何类型的集合。
    这可以用来注入的名称 - 值对,其中名称和值都是字符串的集合。

    可以使用 或 来连接任何实现java.util.Collection或数组。

    会遇到两种情况(a)将收集的直接的值及(b)传递一个bean的引用作为集合的元素之一。

    例子:

    我们使用Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:

    步骤描述
    1Create a project with a name SpringExample and create a package com.manongjc under the src folder in the created project.
    2Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter.
    3Create Java classes JavaCollection, and MainApp under the com.manongjc package.
    4Create Beans configuration file Beans.xml under the src folder.
    5The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below.

    这里是JavaCollection.java文件的内容:

    1. package com.manongjc;
    2. import java.util.*;
    3. public class JavaCollection {
    4. List addressList;
    5. Set addressSet;
    6. Map addressMap;
    7. Properties addressProp;
    8. // a setter method to set List
    9. public void setAddressList(List addressList) {
    10. this.addressList = addressList;
    11. }
    12. // prints and returns all the elements of the list.
    13. public List getAddressList() {
    14. System.out.println("List Elements :" + addressList);
    15. return addressList;
    16. }
    17. // a setter method to set Set
    18. public void setAddressSet(Set addressSet) {
    19. this.addressSet = addressSet;
    20. }
    21. // prints and returns all the elements of the Set.
    22. public Set getAddressSet() {
    23. System.out.println("Set Elements :" + addressSet);
    24. return addressSet;
    25. }
    26. // a setter method to set Map
    27. public void setAddressMap(Map addressMap) {
    28. this.addressMap = addressMap;
    29. }
    30. // prints and returns all the elements of the Map.
    31. public Map getAddressMap() {
    32. System.out.println("Map Elements :" + addressMap);
    33. return addressMap;
    34. }
    35. // a setter method to set Property
    36. public void setAddressProp(Properties addressProp) {
    37. this.addressProp = addressProp;
    38. }
    39. // prints and returns all the elements of the Property.
    40. public Properties getAddressProp() {
    41. System.out.println("Property Elements :" + addressProp);
    42. return addressProp;
    43. }
    44. }

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

    1. package com.manongjc;
    2. import org.springframework.context.ApplicationContext;
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;
    4. public class MainApp {
    5. public static void main(String[] args) {
    6. ApplicationContext context =
    7. new ClassPathXmlApplicationContext("Beans.xml");
    8. JavaCollection jc=(JavaCollection)context.getBean("javaCollection");
    9. jc.getAddressList();
    10. jc.getAddressSet();
    11. jc.getAddressMap();
    12. jc.getAddressProp();
    13. }
    14. }

    以下是配置文件beans.xml文件里面有配置的集合的所有类型:

    1. 1.0" encoding="UTF-8"?>
    2. //www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    6. class="com.manongjc.JavaCollection">
    7. <property name="addressList">
    8. INDIA
    9. Pakistan
    10. USA
    11. USA
    12. property>
    13. <property name="addressSet">
    14. <set>
    15. INDIA
    16. Pakistan
    17. USA
    18. USA
    19. set>
    20. property>
    21. <property name="addressMap">
    22. 1" value="INDIA"/>
    23. 2" value="Pakistan"/>
    24. 3" value="USA"/>
    25. 4" value="USA"/>
    26. property>
    27. <property name="addressProp">
    28. INDIA
    29. Pakistan
    30. USA
    31. USA
    32. property>

    创建源代码和bean配置文件完成后,让我们运行应用程序。如果应用程序一切顺利,这将打印以下信息:

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

     

    注入Bean引用:

    下面bean定义将帮助您了解如何注入bean的引用作为集合的元素之一。甚至可以混合引用和值都在一起,如下图所示:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    6. <!-- Bean Definition to handle references and values -->
    7. <bean id="..." class="...">
    8. <!-- Passing bean reference for java.util.List -->
    9. <property name="addressList">
    10. <list>
    11. <ref bean="address1"/>
    12. <ref bean="address2"/>
    13. <value>Pakistan</value>
    14. </list>
    15. </property>
    16. <!-- Passing bean reference for java.util.Set -->
    17. <property name="addressSet">
    18. <set>
    19. <ref bean="address1"/>
    20. <ref bean="address2"/>
    21. <value>Pakistan</value>
    22. </set>
    23. </property>
    24. <!-- Passing bean reference for java.util.Map -->
    25. <property name="addressMap">
    26. <map>
    27. <entry key="one" value="INDIA"/>
    28. <entry key ="two" value-ref="address1"/>
    29. <entry key ="three" value-ref="address2"/>
    30. </map>
    31. </property>
    32. </bean>
    33. </beans>

    使用上面的bean定义,需要定义这样一种方式,他们应该能够处理的参考,以及setter方法。

     

    注入null和空字符串的值

    如果需要传递一个空字符串作为值,如下所示:

    1. <bean id="..." class="exampleBean">
    2. <property name="email" value=""/>
    3. </bean>

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

    如果需要传递一个null值,如下所示:

    1. <bean id="..." class="exampleBean">
    2. <property name="email"><null/></property>
    3. </bean>

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

     

  • 相关阅读:
    Unity类银河恶魔城学习记录7-8 P74 Pierce sword源代码
    debian11 安装后必备配置
    SparkStreaming【实例演示】
    深度学习 图像分割综述
    QT实现相关功能
    【C++】:模板的使用
    河南灵活用工系统开发|灵活用工模式适合电商行业吗?
    R-YOLOv7-tiny检测浸水玉米胚乳裂纹
    服务器部署 CentOS、VeraCrypt、Docker、主从MySQL、Redis、备份等
    View 自定义 - 概览
  • 原文地址:https://blog.csdn.net/2301_78835635/article/details/133604444