[Spring开发笔记]Spring 集合注入详解

来源:互联网 发布:网易云音乐无网络连接 编辑:程序博客网 时间:2024/04/26 05:46

 

学过Spring的同学都知道,Spring中不仅可以注入简单类型的数据,还可以注入集合,事实上在项目开发中,还是经常会用到集合对象注入的。下面我们就来一起做个分析,希望对正在学习的朋友来说有点帮助。

Spring使用回顾:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

可被注入的类型:

1.简单类型:Java中的基本数据类型

2.集合:Java中给我们一些能存储大量的数据对象

3.对象:car(小汽车) 属性(车轮 车窗 方向盘)方法(刹车)

Spring中的依赖注入(DI/ioc/反转控制/依赖注入)

注入方式:

1)setter方法注入使用与测试

   步骤:(1)先在被注入的类中定义变量(简单类型、其他的类对象)
         (2)定义该变量的setter方法
         (3)新建applicationContext.xml(一般这么起名)
              配置<bean id="" class="">
                  bean两个重要的属性 id (是这个bean唯一的标识) [example:人的身份证]
                                    class(是这个bean的所在的位置)[example:人的地址]
                  1.增加<property name="">
                        
                        </property>
                    设置<property>的name属性 (它就是我们要注入变量)
                  2.设置<property>的值 有两种方式:第一种是直接设置属性值 (value="设置的值"),另一种方式 加一个子标签<value>设置值</value>(不知道怎么写的同学,面壁思过,参考我们的例子)   
                  3.注意,如果我们注入的是一个对象,也分两步:第一步,先把对象配置出来(定义一个该对象的bean),在通过<property>注入到需要该对象的地方。[example:  <property name='obj' ref='另一个bean的id'>]

         (4)编写测试注入的入口方法
              入口方法 ( 李老师 语录 :public static void main(String args[]) )
                  1.获取容器(上下文对象) ApplicationContext,获取
                    上下文对象的方法有三种:通过类路径:ClassPathXmlApplicationContext()
                                     通过文件系统路径:FileSystemXmlApplicatoinContext()
                                      通过获取Web路径:WebApplicationContext()
                    注意:配置文件名称可匹配 app*.xml,也可以是数组加载多个配置文件

                  2.获取要使用的对象
                                   
                                   通过1步得到上下文对象的.getBean('定义的bean的id');

                    注意:要对getBean过来的对象进行强制类型转换,转换成我们需要的类型

                                            
2)构造器注入

    1)要在被注入的类中定义构造方法
    2)配置applicatoinContext文件,如同setter方法注入的第“(3)”步

       注意:定义<property>设定值得方法不同于setter方法注入
             应该是<constructor-arg ></constructor-arg>
                   设置<constructor-arg>的属性,设置index(索引)对应构造器的第 index 个位置
                   的参数值(index从0开始),同时还可以注入对象
    3)编写测试注入的入口方法 同setter方法注入第“(4)”步

3)接口注入

    接口注入,Spring部分版本不支持






Spring知识回顾结束>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                  
1)先将简单的数据类型注入到我们的类中
//////////////////////////////////////////////////////////////////
            
            /*注入list并且测试输出
             * list装配步骤:
             * 1)先定义集合类型的变量,如:lists 并生成其getter和setter方法
             * 2)在配置文件中定义
             * <property name="lists">
                    <list>
                      <value>CSDN1</value>
                      <value>CSDN2</value>
                      <value>CSDN3</value>
                      <value>CSDN4</value>
                    </list>
                  </property>
             *
             * */
            List<String> list=gs.getLists();

            for(String str:list){
                    System.out.println(str);
            }
            
            //////////////////////////////////////////////////////////////////
            
            /*
             * 注入set集合的方法
             * 1)在要注入的类中定义要注入的集合  比如 sets 并生成其getter和setter方法
             * 2)修改配置文件,增加属性
             *  <property name="sets">
                          <set>
                            <value>**set**CSDN1</value>
                        <value>**set**CSDN2</value>
                        <value>**set**CSDN3</value>
                        <value>**set**CSDN4</value>
                          </set>
                   </property>
             * */
            //测试注入set集合的方法
            Set<String> sets=gs.getSets();
            for(String str2:sets){
                   
                    System.out.println(str2);
            }
            
            //////////////////////////////////////////////////////////////////
            
            /*
             * 测试注入Map集合的步骤
             * 1)在要注入的类中定义Map对象类型的变量,比如:maps 并生成其getter和setter方法
             * 2)配置配置文件,增加一个property属性,同时增加Map集合
             * <property name="maps">
                      <map>
                         <entry key="1">
                            <value>###Map###CSDN1</value>
                         </entry>
                        
                         <entry key="2">
                            <value>###Map###CSDN2</value>
                         </entry>
                        
                         <entry key="3">
                            <value>###Map###CSDN3</value>
                         </entry>
                        
                         <entry key="4">
                            <value>###Map###CSDN4</value>
                         </entry>
                      </map>
                   </property>
             *
             *
             * */
            //测试注入Map集合的方法
            Map<Integer,String> maps=gs.getMaps();
            //得到所有的键值
            Set<Integer> sts=maps.keySet();
            //循环所有的键值
            for(Integer i:sts){
                   
                    System.out.println("当前Map的第"+i+"个值为"+maps.get(i));
            }
            
            //////////////////////////////////////////////////////////////////
            
            
            /* 1)在要注入的类中定义一个Properties类型的变量 比如:pops 并生成其getter和setter方法
             * 2)配置文件中修改一下,增加一个配置,配置内容如下:
             *     <property name="pops">
                              <props>
                                <prop key="driver">com.mysql.jdbc.Driver</prop>
                                <prop key="user">root</prop>
                                <prop key="pwd">123</prop>
                              </props>
                           </property>
             * 3)注意要先将Properties获取到后,使用stringPropertyNames()方法转换为key值
             * */
            
            
            //获得Properties集合
            Properties pps=gs.getPops();
            //获得所有的属性名称集合
            Set<String> set=pps.stringPropertyNames();
            //遍历所有的Set
            for(String pkey:set){
                   
                    System.out.println("配置文件的"+pkey+"属性值为"+pps.getProperty(pkey));
            }

       [原创地址]    [源码下载]    [更多原创,多多支持多]

 

原创粉丝点击