控制反转IOC:Spring通过一种称作控制反转的技术来更好的实现低耦合。那么什么是控制反转呢?在了解控制反转之前我们先要了解IOC容器怎么管理对象,通常我们直接在对象内部通过new进行对象的创建,是程序主动去创建依赖对象;而IOC是专门有一个容器来管理、控制、创建这些对象,以及控制外部资源获取;传统应用程序是有我们自己再对象中主动控制去直接获取依赖对象。而反转则是由容器来帮忙创建及注入依赖对象;那为什么要反转呢?由容器帮我们查找及注入依赖对象,对象是被动的接受依赖对象。这就是所谓的控制反转。应用IOC,一个对象依赖其他对象会通过被动的方式传递进来,而不是这个对象自己去创建或者查找依赖对象。容器会在对象初始化时不等对象请求就主动将依赖传递给它。
IOC实现方式
【1】使用xml方式实现ioc --常用
<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="bookdao" class="com.zhangguo.Spring051.ioc01.BookDAO"></bean> </beans>
【2】使用注解 --常用
注:如果内容比较多使用配置会花费很多时间降低开发效率,通过注解可以减轻工作量,但是注解后修改要麻烦一些,耦合度会增加,应该根据需要选择合适的方法。
在类上增加一个@Component,在类的开头使用了@Componet注解,他可以被Spring容器识别,启动Spring后,会自动把它转成容器管理的Bean。
除了@Component外,Spring提供了3个等效的注解,分别对应于DAO层、Service层和Controller进行注解。
(a):@Repository用于对DAO实现类进行注解;
(b):@Service用于对业务层注解,他是与@Component最相近的一个;
(c):@Controller用于标注在控制层;