Spring IOC/DI的理解:
IOC(Inversion of Control):反转控制。
在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源(即需要自己new出对象),在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。
反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,(如何创建对象,何时创建对象由ioc容器管理),只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。
IOC管理bean的生命周期,控制着bean的依赖注入
DI(Dependency Injection):依赖注入。
IOC的另一种表述方式是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。相对于IOC而言,这种表述更直接。
IOC和DI的目的:
依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。
这么做还可以实现解耦操作:
它把对象之间的依赖关系转成用一个第三方的容器来管理,防止很多个对象之间紧密结合在一起(即一个对象中new出了另一个对象)
减少了频繁的new对象的操作,提高资源重用。