- UserDao 接口
- UserDaoImpl 实现类
- UserService 业务接口
- UserServiceImpl 业务实现类
在我们之前的业务中,用户需求可能会影响原来的代码,我们需要根据用户的需求去改原来的代码!如果程序代码量大,修改一次的成本代价十分昂贵!
我们使用一个Set接口实现,程序已经发生了革命性变化
private UserDao userDao;
// 利用set进行动态值的注入!
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
- 之前,程序是主动创建对象,控制权在程序员手上!
- 使用了set 注入之后,程序不在具有主动性,而是变成了被动接收对象,这就叫控制反转!
这种思想从本质上解决了问题,程序员不用管理对象的创建,耦合性大大降低,可以更加专注的关注于业务处理。
图例
IOC 本质
控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中,我们使用面向对象编程,对象创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓的控制反转就是:获得依赖对象的方式反转了。
控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring 中实现控制反转的是IOC容器,其实现方法是依赖注入(Dependency Injection, DI)
网友评论