上一节总结了依赖注入中的构造器注入方式,本节总结基于Setter方式的注入及xml文件的配置方式。
还是根据所依赖对象的类型分为:
(1)基本类型:如int型、String型等。
(2)自定义类型:自定义的类型,也就是封装成了一个单独的bean。
(3)容器类型:如List、Set、Map等
(4)空类型
使用Setter方法注入必须要遵循javabean规范,类内部使用setter/getter方法来设置或者获取属性值。
而且在调用者类内必须要有默认构造函数。如果已经定义了含参构造函数,则必须显式的定义无参构造函数。
因为setter注入方式即调用类中的setter方法将其他属性注入,既然要调用setter方法则需要有对象,spring框架内部就是使用反射原理+类名+默认构造函数先创建一个对象,然后调用setter方法。
具体定义如下所示:
public class MyService{ private MyDao myDao; //引用其他bean private Description des; //引用其它bean private List<String> list = new ArrayList<String>(); //list容器 private Set<String> set = new HashSet<String>(); //set容器 //map容器 private Map<String, Integer> maps = new HashMap<String, Integer>(); //setter & getter方法 public void setMyDao(MyDao myDao){ this.myDao = myDao; } public MyDao getMyDao(){ return myDao; } public void setDes(Description des){ this.des = des; } public Description getDes(){ return des; } public void setList(List<String> list){ this.list = list; } public List<String> getList(){ return list; } public void setSet(Set<String> set){ this.set = set; } public Set<String> getSet(){ return set; } public void setMaps(Map<String, Integer> maps){ this.maps = maps; } public Map<String, Integer> getMaps(){ return maps; } public void addUser(){ myDao.addUser(); des.descript(); } public void print(){ //打印list中的内容 for(String str : list){ System.out.println(str); } for(String str2 : set){ System.out.println(str2); } Iterator<Map.Entry<String, Integer>> it = maps.entrySet().iterator(); while(it.hasNext()){ Map.Entry<String, Integer> entry = it.next(); System.out.println(entry.getKey()); System.out.println(entry.getValue()); } } }
xml文件配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <!--对所有bean进行延迟初始化--> <!-- <context:component-scan base-package="com.springframework.ioc"/> --> <!-- beans declare go here --> <bean id="mysql" class="com.springframework.ioc.MysqlDaoImpl"> <!--调换构造函数顺序--> <constructor-arg index="1" value="1"/> <constructor-arg index="0" value="mysql"/> </bean> <bean id="oracle" class="com.springframework.ioc.OracleDaoImpl"> <property name="name" value="oracle"/> </bean> <bean id="description" class="com.springframework.ioc.Description"/> <!-- 通过setter方法注入--> <bean id = "myservice" class="com.springframework.ioc.MyService"> <property name="myDao" ref = "mysql"/> <property name="des" ref = "description"/> <property name="list"> <list> <value>xiaoming</value> <value>xiaohong</value> <value>xiaolin</value> </list> </property> <property name="set"> <set> <value>jin</value> <value>yin</value> <value>tong</value> </set> </property> <property name="maps"> <map> <entry key="wang" value="1"/> <entry key="li" value="2"/> <entry key="hu" value="3"/> </map> </property> </bean> </beans>
总的来说就是使用
<property name=" xxx" ref = "xxx "/>
或者是
<property name="xxx" value = "xxx"/>
相关推荐
IOC DI 一个spring4.2.0 spring setter 和构造 注入 的小例子
Spring容器的特点 (1)容器对对象的管理 a.创建时机:默认和容器一起创建。 可以使用延缓实例化 可以使用延缓所有组件实例化... Spring 使用DI技术实现了IoC控制。 a.setter注入 b.构造注入 c.接口注入(以后了解)
依赖注入、IoC/DI Spring 框架(核心)IoC 容器 IoC:控制反转 DI:依赖注入 什么是依赖?一个组件(对象)的运行需要用到另一个组件(对象),称这种关系为依赖关系 举例:鱼依赖水,生命依赖空气、阳光、水...
Spring容器的特点 (1)容器对对象的管理 a.创建时机:默认和容器一起创建。 可以使用延缓实例化 可以使用延缓所有组件实例化... Spring 使用DI技术实现了IoC控制。 a.setter注入 b.构造注入 c.接口注入(以后了解)
Spring容器的特点 (1)容器对对象的管理 a.创建时机:默认和容器一起创建。 可以使用延缓实例化 可以使用延缓所有组件实例化... Spring 使用DI技术实现了IoC控制。 a.setter注入 b.构造注入 c.接口注入(以后了解)
(一) setter注入类型Setter Injection 9 (二) 构造方法Constructor Injection 10 四、 id、name 11 五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13...
(一) setter注入类型Setter Injection 9 (二) 构造方法Constructor Injection 10 四、 id、name 11 五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13...
本篇博文适合零基础的同学:主要包括:spring介绍; Ioc 入门案例; Di 入门案例; 核心API介绍; 装配bean基于xml---实例化方式;...属性注入--setter方法 p命名空间; sqel; 集合注入; 装配bean基于注解;
常用注解实践示例、问答S02 - 依赖注入Spring @Component 模型DI 类型 - 构造函数、setter、p 和 c 命名空间Bean 作用域实践示例、问答S03 - 数据访问 - 第一部分数据源绑定,连接池配置JDBCTemplate 介绍工具 - ...
...............................................................................................................................23 setter 方法注入:.........................................................