Spring IOC/DI介绍

1.Spring IOC

IOC(Inversion of Control):控制反转,IOC是一种面向对象的设计思想,可以减低代码间的耦合度,其中最常见的方式叫做依赖注入(DI)。IOC意味着将你设计好的对象交给容器控制,而不是传统的在你对象内部控制

控制反转三个问题: 1.谁控制谁

                                  2.控制了什么

                                  3.为什么反转了

谁控制谁,控制什么:在传统Java代码中,我们直接在对象内部通过new创建对象,是程序主动去创建对象。而IOC中专门有一个容器来创建这些对象,即由IOC容器来控制对象的创建,主要控制外部资源的获取(不只是对象还包括文件等)

为什么反转了:有反转就有正转,传统应用程序是由我们在对象中主动控制去直接获取依赖对象,这就是正转。反转是由容器来帮忙创建并注入依赖对象,因为容器帮我们创建并注入依赖对象,对象只是被动接受依赖对象,所以是反转,依赖对象的获取被反转了

2.Spring DI

DI(Dependency Injection):依赖注入,在容器运行的时候,扫描所有的依赖关系,并为之动态的注入对应的依赖关系。依赖注入的目的并不是为软件系统带来更多的功能,而是为了提高组件重用的频率

依赖注入三个问题:  1.谁依赖谁

                                   2.谁注入谁

                                   3.注入了什么

谁依赖谁,谁注入谁:应用程序依赖IOC容器。IOC容器注入应用程序依赖的对象

注入了什么:注入某个对象所需要的资源

总结:

依赖注入是控制反转的一种实现方式,还有一种方式是依赖查找,这两个概念就是一个同一个概念的不同角度描述

3.IOC的优缺点

优点:由IOC容器通过配置文件来管理对象的生命周期、依赖关系等,这样就不需要重新修改并编译具体的代码,从而实现组件之间的解耦,提高程序的灵活性和可维护性

缺点:创建对象的步骤变得复杂了,不直观

           使用反射来创建对象,在效率上会有损耗

           缺少IDE重构的支持,如果修改了类名,需要手动修改XML文件

4.什么是IOC容器?

IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象中的依赖

猜你喜欢

转载自blog.csdn.net/ys_230014/article/details/88084482