学过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)); } [原创地址] [源码下载] [更多原创,多多支持多] |