DI称之为依赖注入,也叫控制反转(Ioc)。
依赖注入的意义是:让组件依赖于抽象,当组件要与其它实际对象发生依赖关系时,通过抽象来注入依赖的实际对象。这话听起来有点抽象,我们就通过实际列子来看看什么是依赖注入吧。
依赖注入主要有以下几种方式:属性注入,集合注入,set注入,方法注入,构造注入。
先来讲下集合注入:
java中的集合主要有:List,Set,Map,此外还有个Properties
现在我们通过一个xml文件来实现对这些集合的注入。
实现步骤:
新建一个web工程(我IDEMyEclipse6.5),新建两个包com.sw.action,com.sw.test1. 在com.sw.action包中新建一个java文件:DI,内容如下:
package com.sw.action;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class DI {
private Map map;
private Set Set;
private List list;
private Properties pro;
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public Set getSet() {
return Set;
}
public void setSet(Set set) {
Set = set;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Properties getPro() {
return pro;
}
public void setPro(Properties pro) {
this.pro = pro;
}
}
2. 在项目的src目录下新建config-di.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="di" class="com.sw.action.DI">
<!-- List注入 -->
<property name="list">
<list>
<value>list1</value>
<value>list2</value>
<value>list3</value>
</list>
</property>
<!-- Set注入 -->
<property name="set">
<set>
<value>set1</value>
<value>set2</value>
<value>set3</value>
</set>
</property>
<!-- Map注入 -->
<property name="map">
<map>
<entry key="1">
<value>one</value>
</entry>
<entry key="2">
<value>two</value>
</entry>
<entry key="3">
<value>three</value>
</entry>
</map>
</property>
<!-- Properties注入 -->
<property name="pro">
<props>
<prop key="1">one</prop>
<prop key="2">two</prop>
<prop key="3">three</prop>
</props>
</property>
</bean>
</beans>
以上注入的内容仅仅是一些字符串,如果想把一些实体类(如Date类)注入到集合中,就该对xml文件进行配置,方法如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 定义需要插入到集合中的Date类 -->
<bean id="date" class="java.util.Date"></bean>
<bean id="di" class="com.sw.action.DI">
<!-- List注入 -->
<property name="list">
<list>
<value>list1</value>
<value>list2</value>
<value>list3</value>
<!-- 将Date类加入到集合中 -->
<ref bean="date" />
</list>
</property>
<!-- Set注入 -->
<property name="set">
<set>
<value>set1</value>
<value>set2</value>
<value>set3</value>
<!-- 将Date类加入到集合中 -->
<ref bean="date" />
</set>
</property>
<!-- Map注入 -->
<property name="map">
<map>
<entry key="1">
<value>one</value>
</entry>
<entry key="2">
<value>two</value>
</entry>
<entry key="3">
<value>three</value>
</entry>
<entry key="4">
<!-- 将Date类加入到集合中 -->
<ref bean="date" />
</entry>
</map>
</property>
<!-- Properties注入 -->
<property name="pro">
<props>
<prop key="1">one</prop>
<prop key="2">two</prop>
<prop key="3">three</prop>
</props>
</property>
</bean>
</beans>