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

Spring依赖注入的两种方式

2017-12-26 13:37 501 查看
依赖是说, bean对象都依赖Spring容器来管理生命周期. 注入是说, bean对象的资源都由Spring容器来设置和装配.

依赖注入是控制反转的一种技术体现. 这种技术可以实现类之间的解耦. 当使用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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: