Spring(IOC控制反转)理论推导

这个思想,我听一遍就懂了。思想的事情,需要每一句话不断琢磨,IOC就是一个根本性的变化,理解后就会有一种大彻大悟的感觉,呼吸都会顺畅很多。学习之前,要多感受传统开发下,在业务层实现类(ServiceImpl)下调用接口实现类(DaoImpl)的瓶颈。

问题

在我们之前的业务中,用户的需求可能会影响我们原来的代码, 我们需要根据用户的需求去修改原代码,如果程序代码量十分大,修改一次的成本代价身份昂贵。

开发顺序

1.Dao接口
2.DaoImpl实现类
3.Service接口
4.ServiceImpl业务实现类

用户是从业务层(只有逻辑代码)进入

IOC

在传统ServiceImpl中直接new一个Dao层实现类,一个业务一个实现类,导致每增加一个用户功能都会导致new的实现类发生改变。导致,代码波动很大,所以,在ServiceImpl中,直接添加DaoImpl的set方法,形成接口,这样就可以在用户层面统一调用set方法进行更新功能。

ServiceImpl
在这里插入图片描述
总之一句话,就是使系统的耦合性降低了。更加灵活了。可以专心的在功能上进行开发,省去在植入功能上的烦恼。
这是IOC的原型,Spring就是基于这个原型,进行开发。

深入理解

传统开发就是在业务层实现接口类(ServiceImpl)下写死
(UserDao dao=new UserDaoImpl)
每次进行功能更新,都需要程序员进行不断地在ServiceImpl下更改实现类接口下的接口实现类(DaoImpl)。所以控制权在程序员手里。
所以,经过IOC思想的反转,发生了根本性的变化,通过在业务层实现接口类(ServiceImpl)下声明实现类接口(Dao),添加set接口,灵活更改实现类接口中的接口实现类(DaoImpl),使关注点就全部转移到了用户层的实现功能上,所以控制权转移到了用户。

IOC本质

控制反转是一种设计思想,DI(依赖注入)是实现IOC的一种方式。
控制反转是一种通过描述(XML或注解)并通过第三方生产或获取特定对象的方式。在Spring中实现控制反转的是LoC容器,其实现方法是依赖注入(Dependecy Injection,DI)。

总结:传统的开发在业务层进行更新业务,更新业务是由程序员完成,看程序员选择和调用什么业务。spring就开始,在用户层,看用户选择和调用什么业务。

Guess you like

Origin blog.csdn.net/fhuqw/article/details/121261848