IOC —Inversion of Control,控制反转
控制反转:是软件工程的一个思想,java通过反射,将对象的创建、依赖关系、生命周期的控制权转移给ioc框架容器管理。
解决了哪些问题?
在没有spring ioc 容器之前,对象的依赖需要在类内部主动创建,使得对象与对象之间高耦合,导致程序难于维护和扩展。
有了ioc容器之后,把创建和查找依赖的工作交给容器,由容器注入对象,实现对象与对象之间松耦合使代码更容易维护和扩展,符合开闭原则(对扩展开放,对修改关闭)。
在没有spring ioc 容器之前,对象的依赖需要在类内部主动创建
如果对最底层参数动态化,需要修改所有依赖对象的代码。
如果自上而下有几千个依赖关系,需要修改几千遍逻辑,这是不能接受的。
实现控制反转之后,只需要修改,逻辑变动的依赖的逻辑。
真的是易于维护和扩展。
由于实现了低耦合
在现实开发工作中,只要定义好好接口,
相关责任人只用关注自己的实现就可以了。
接口实现后,就能写单元测试,不用等所有的接口都实现了才能测试。
也提高团队合作效率,降低内耗。
spring利用ioc思想,实现控制程序的流程,我们只需要关注不同接口的业务逻辑实现,框架在相应流程中执行我们自定义的业务逻辑,把业务的执行和实现进行分离,大大提高了程序设计的灵活性。
DI—Dependency Injection:依赖注入
对ioc容器控制反转更具体的解释,获得依赖对象的方式反转了。
DI 依赖注入的几种方式
DL(依赖查找)