您的位置:首页 > 编程语言 > Java开发

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

2011-05-29 09:08 495 查看
 

学过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));

            }

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐