zoukankan      html  css  js  c++  java
  • Spring 集合注入

      Spring注入是spring框架的核心思想之一。在实际的开发中,我们经常会遇见这样一些类的注入,这些类中包含一些集合作为类的属性,那么要怎样想类中的集合注入数据呢?本文通过一个简单的示例向大家介绍一下如何在Spring中完成集合信息的注入。

      首先建立一个最基本的web项目:springSetInjection。

      

      干脆利落直接点击Finish,生成springSetInjection项目,框架如下图:

      首先向项目中引入Spring开发必要的jar包,将相关包放在lib目录下:

      然后在src目录下新建两个package:com.unionpay.beans 和 com.unionpay.controller。从包名就可以看出,这两个package的作用:一个用来装Bean类,一个用来装Controller类。

      下面在beans包里面新建两个类:Person.java 和 Injection.java

      Person.java

     1 package com.unionpay.beans;
     2 
     3 public class Person {
     4     
     5     private String username;
     6     private int age;
     7     private String address;
     8     
     9     
    10     public Person(String username, int age, String address) {
    11         super();
    12         this.username = username;
    13         this.age = age;
    14         this.address = address;
    15     }
    16 
    17     public Person() {
    18         super();
    19         // TODO Auto-generated constructor stub
    20     }
    21 
    22     public String getUsername() {
    23         return username;
    24     }
    25 
    26     public void setUsername(String username) {
    27         this.username = username;
    28     }
    29 
    30     public int getAge() {
    31         return age;
    32     }
    33 
    34     public void setAge(int age) {
    35         this.age = age;
    36     }
    37 
    38     public String getAddress() {
    39         return address;
    40     }
    41 
    42     public void setAddress(String address) {
    43         this.address = address;
    44     }
    45 
    46     @Override
    47     public String toString() {
    48         return "Person [username=" + username + ", age=" + age + ", address=" + address + "]";
    49     }
    50 }

      Injection.java

     1 package com.unionpay.beans;
     2 
     3 import java.util.List;
     4 import java.util.Map;
     5 import java.util.Properties;
     6 import java.util.Set;
     7 
     8 public class Injection {
     9     
    10     private List<Object> lists;
    11     private Set<Object> sets;
    12     private Map<Object,Object> maps;
    13     private Properties properties;
    14     
    15     public Injection(List<Object> lists, Set<Object> sets, Map<Object, Object> maps, Properties properties) {
    16         super();
    17         this.lists = lists;
    18         this.sets = sets;
    19         this.maps = maps;
    20         this.properties = properties;
    21     }
    22 
    23     public Injection() {
    24         super();
    25         // TODO Auto-generated constructor stub
    26     }
    27 
    28     public List<Object> getLists() {
    29         return lists;
    30     }
    31     
    32     public void setLists(List<Object> lists) {
    33         this.lists = lists;
    34     }
    35 
    36     public Set<Object> getSets() {
    37         return sets;
    38     }
    39 
    40     public void setSets(Set<Object> sets) {
    41         this.sets = sets;
    42     }
    43 
    44     public Map<Object, Object> getMaps() {
    45         return maps;
    46     }
    47 
    48     public void setMaps(Map<Object, Object> maps) {
    49         this.maps = maps;
    50     }
    51 
    52     public Properties getProperties() {
    53         return properties;
    54     }
    55 
    56     public void setProperties(Properties properties) {
    57         this.properties = properties;
    58     }
    59     
    60     public String listInfo(){
    61         return lists.toString();
    62     }
    63     
    64     public String setInfo(){
    65         return sets.toString();
    66     }
    67     
    68     public String mapInfo(){
    69         return maps.toString();
    70     }
    71     
    72     public String propertiesInfo(){
    73         return properties.toString();
    74     }
    75 }

      然后在src目录下新建spring配置文件:config-beans.xml

      config-beans.xml

     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" xmlns:context="http://www.springframework.org/schema/context"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     5 
     6     <bean id="injectionBean" class="com.unionpay.beans.Injection">
     7         <property name="lists">
     8             <list>
     9                 <value>data1</value>
    10                 <ref bean="person" />
    11                 <bean class="com.unionpay.beans.Person">
    12                     <property name="username" value="jianxianwch"></property>
    13                     <property name="age" value="27"></property>
    14                     <property name="address" value="Shanghai"></property>
    15                 </bean>
    16             </list>
    17         </property>
    18 
    19         <property name="sets">
    20             <set>
    21                 <value>data1</value>
    22                 <ref bean="person" />
    23                 <bean class="com.unionpay.beans.Person">
    24                     <property name="username" value="jianxianwch"></property>
    25                     <property name="age" value="27"></property>
    26                     <property name="address" value="Shanghai"></property>
    27                 </bean>
    28             </set>
    29         </property>
    30 
    31         <property name="maps">
    32             <map>
    33                 <entry key="key 1" value="data1"></entry>
    34                 <entry key="key 2" value-ref="person"></entry>
    35                 <entry key="key 3">
    36                     <bean class="com.unionpay.beans.Person">
    37                         <property name="username" value="jianxianwch"></property>
    38                         <property name="age" value="27"></property>
    39                         <property name="address" value="Shanghai"></property>
    40                     </bean>
    41                 </entry>
    42             </map>
    43         </property>
    44         
    45         <property name="properties">
    46             <props>
    47                 <prop key="username">admin</prop>
    48                 <prop key="password">admin</prop>
    49             </props>
    50         </property>
    51     </bean>
    52 
    53     <bean id="person" class="com.unionpay.beans.Person">
    54         <constructor-arg name="username" value="jxwch"></constructor-arg>
    55         <constructor-arg name="age" value="27"></constructor-arg>
    56         <constructor-arg name="address" value="Anhui"></constructor-arg>
    57     </bean>
    58 </beans>

      从配置文件中,我们可以看出将lists,sets,maps 和properties注入到了injectionBean中。Spring支持这四种集合的注入。

      然后在controller包中建立InjectionController.java

     1 package com.unionpay.controller;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 import com.unionpay.beans.Injection;
     7 
     8 public class InjectionController {
     9 
    10     public static void main(String[] args) {
    11         // TODO Auto-generated method stub
    12         
    13         ApplicationContext context = new ClassPathXmlApplicationContext("config-beans.xml");
    14         
    15         Injection injection = (Injection) context.getBean("injectionBean");
    16         
    17         System.out.println(injection.getLists());
    18         System.out.println(injection.getSets());
    19         System.out.println(injection.getMaps());
    20         System.out.println(injection.getProperties());
    21     }
    22 
    23 }

      到目前为止,项目建立完成。右键InjectionController.java文件,选择Run As -->Java Application。终端打印出如下信息:

      从终端打印信息中可以看见刚才注入的四种集合的数据,示例成功。

      源码下载:test.zip

      

  • 相关阅读:
    [转载]Linux下mail使用技巧
    VTK Online教程大全
    拓扑结构与TopoDS
    三维视图变换与相机模型
    说说DoDataExchange(CDataExchange* pDX)
    Lua Lib在VC下的编译
    建立最简单的OpenCASCADE程序
    构建通用类型 继承 VS 聚合
    【软件】新瓶装老酒 MyCapture
    用std::find查找文件流中的内容
  • 原文地址:https://www.cnblogs.com/jxwch/p/6611925.html
Copyright © 2011-2022 走看看