Spring学习(五) Ioc控制反转

所谓的控制反转就是 应用本身不负责依赖对象的创建以及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的控制反转。
例如:
1.创建DAO接口
package com.bill.dao;
public interface PersonDao {
	public void add();
}

2.创建DAO接口的实现类
package com.bill.dao.impl;
import com.bill.dao.PersonDao;

public class PersonDaoBean implements PersonDao {
	public void add() {
		System.out.println("this is add() of PersonDaoBean");
	}

}

3.应用层代码如下:
package com.bill.impl;
import com.bill.PersonService;
import com.bill.dao.PersonDao;
/**
 * @author Bill
 */
public class PersonServiceBean implements PersonService {
	private PersonDao personDao;		
	public void setPersonDao(PersonDao personDao) {
		this.personDao = personDao;
	}
	public PersonDao getPersonDao(){
		return personDao;
	}
	public void save(){
		personDao.add();
	}
}

4.beans.xml
<bean id="personDao" class=" com.bill.dao.impl.PersonDaoBean"/>
	<bean id="personService" class="com.bill.impl.PersonServiceBean">
		<property name="personDao" ref="personDao"></property>
	</bean>

5.测试代码
AbstractApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
		PersonService personService = (PersonService)act.getBean("personService");
		personService.save();
	    act.close();

控制台打印出:this is add() of PersonDaoBean

说明了,应用本身PersonServiceBean不负责PersonDaoBean对象的创建和维护,PersonDaoBean对象的创建和维护由Spring容器负责,PersonDaoBean对象通过依赖注入,注入到应用层PersonServiceBean的属性personDao中。这就是控制反转。

你可能感兴趣的:(spring)