Spring依赖注入的两种方式
2017-12-26 13:37
501 查看
依赖是说, bean对象都依赖Spring容器来管理生命周期. 注入是说, bean对象的资源都由Spring容器来设置和装配.
依赖注入是控制反转的一种技术体现. 这种技术可以实现类之间的解耦. 当使用Spring容器管理对象的时候, 一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象. 而是容器在对象初始化时不等对象请求就主动将依赖传递给它, 实现资源的设置和装配.
依赖注入有两种方式:
set注入
本质上回调类中属性对应的setter方法对属性进行赋值
applicationContext.xml:
user.java
Coll.java
测试
Text.java
构造方法注入
applicationContext.xml
Test.java
依赖注入是控制反转的一种技术体现. 这种技术可以实现类之间的解耦. 当使用Spring容器管理对象的时候, 一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象. 而是容器在对象初始化时不等对象请求就主动将依赖传递给它, 实现资源的设置和装配.
依赖注入有两种方式:
set注入
本质上回调类中属性对应的setter方法对属性进行赋值
applicationContext.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 常量注入 --> <bean id="user" class="com.sxt.beans.User"> <property name="uid" value="1"></property> <property name="uname" value="张三"></property> <property name="uage" value="18"></property> </bean> <bean id="coll" class="com.sxt.beans.Coll"> <!-- list集合注入 --> <property name="list"> <list> <value>张三list</value> <value>李四list</value> <value>王五list</value> <value>赵六list</value> </list> </property> <!-- set集合注入 --> <property name="set"> <set> <value>张三 set</value> <value>李四 set</value> <value>王五 set</value> <value>赵六 set</value> <value>胡七 set</value> </set> </property> <!-- map集合注入 --> <property name="map"> <map> <entry key="1" value="张三map"></entry> <entry key="2" value="李四map"></entry> <entry key="3" value="王五map"></entry> <entry key="4" value="赵六map"></entry> <entry key="16" value="胡七map"></entry> </map> </property> <!-- 注入 --> <property name="props"> <props> <prop key="一">1</prop> <prop key="二">2</prop> <prop key="三">3</prop> <prop key="四">4</prop> <prop key="五">5</prop> </props> </property> </bean> </beans>
user.java
package com.sxt.beans; public class User { private Integer uid; private String uname; private Integer uage; public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public Integer getUage() { return uage; } public void setUage(Integer uage) { this.uage = uage; } public User(Integer uid, String uname, Integer uage) { super(); this.uid = uid; this.uname = uname; this.uage = uage; } public User() { } }
Coll.java
package com.sxt.beans; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; public class Coll { private Set set; private List list; private Map<String, String> map; private Properties props; public Set getSet() { return set; } public void setSet(Set set) { this.set = set; } public List getList() { return list; } public void setList(List list) { this.list = list; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } public Properties getProps() { return props; } public void setProps(Properties props) { this.props = props; } public Coll() { } }
测试
Text.java
package com.sxt.test; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sxt.beans.Coll; import com.sxt.beans.User; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext( "applicationContext.xml"); User user = (User) ac.getBean("user"); System.out.println(user.getUid() + " " + user.getUname() + " " + user.getUage()); Coll c = ac.getBean("coll",Coll.class); List<String> list = c.getList(); for (String l : list) { System.out.println("list " + l); } Set<String> set = c.getSet(); for (String s : set) { System.out.println("set " + s); } Map<String, String> map = c.getMap(); Set<String> set2 = map.keySet(); for (String s : set2) { System.out.println("map " + s + " " + map.get(s)); } Properties p = c.getProps(); String s = (String) p.get("一"); System.out.println(s); } }
构造方法注入
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user2" class="com.sxt.beans.User"> <constructor-arg index="0" value="5" ></constructor-arg> <constructor-arg index="1" value="胡琪琪" ></constructor-arg> <constructor-arg index="2" value="20" ></constructor-arg> </bean> </beans>
Test.java
package com.sxt.test; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sxt.beans.Coll; import com.sxt.beans.User; public class Test { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext( "applicationContext.xml"); User u1 = ac.getBean("user2",User.class); System.out.println(u1.getUid()+u1.getUname()+u1.getUid()); } }
相关文章推荐
- Spring依赖注入的两种方式
- Spring IOC 依赖注入的两种方式XML和注解
- Spring的两种依赖注入方式:setter方法注入与构造方法注入 以及两种方式的区别!
- (4) 编码剖析Spring装配基本属性的原理【附加:注入依赖对象的两种方式】
- Spring两种依赖注入方式的比较
- Spring中依赖注入的两种方式的区别
- Spring依赖注入的两种方式
- Spring-2:bean的两种依赖注入方式
- 那些年、一起追过的Spring--(2)----IOC、两种依赖注入方式
- spring两种常用依赖注入方式
- spring依赖注入的两种方式
- [优质例子存档]Spring的两种依赖注入方式:setter方法注入与构造方法注入
- Spring中IoC两种接口和两种依赖注入方式的比较
- Spring依赖注入的两种方式(根据实例详解)
- 【Spring学习笔记三】-依赖注入的两种方式
- Spring的两种依赖注入方式:setter方法注入与构造方法注入
- map集合遍历的两种方式,在spring中的依赖注入
- 7.3.4: spring的核心机制依赖注入---两种注入方式的对比
- Spring中依赖注入的两种方式的区别
- Spring的两种依赖注入方式:setter方法注入与构造方法注入