SpringBoot的控制反转(IOC)和依赖注入(DI)

控制反转(IOC)

IOC,Inversion of Control,它是一种设计思想,指的是将原本在程序中由我们手动创建对象的控制权,交给Spring框架来管理,将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注入。当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。

lOC由专门的容器来帮忙创建对象,将所有的类都放在Spring容器(DefaultListableBeanFactory, bean工厂)中,

使用IOC的好处:

降低了对象之间的耦合度,也增加了项目的可维护性,灵活性。

传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高度耦合;有了Spring IOC容器之后,把创建和查找依赖对象的控制权交给了容器,由容器进行依赖对象的注入。所以对象与对象之间是松散耦合,有利于功能复用。更重要的是使得程序的整个体系结构变得非常灵活。

lOC容器就像是一个工厂,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。例如。在实际项目中,一个Service接口可能依赖了很多其他接口,如果采用手动new依赖对象的话。我们需要搞清挂所有依赖对象的构造方法。使用了Spring框架之后,我们只需要配置好,然后在需要的地方引用就行。大大增加了项目的可维护性,而且降低了开发难度。

依赖注入(DI):

DI,Dependency lnjection,指的是应用程序在运行时依赖IOC容器来动态注入组件所需要的某个依赖对象。Spring 的DI具体就是通过反射实现注入的,反射允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性等。

理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么?

谁依赖于谁:应用程序依颗于IOC客器;

为什么需要依赖:应用程序需要IOC容器来提供组件需要的外部资源

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

注入了什么:注入某个对象所需要的外部资源(包括对象、资源、常量数据)

好处:通过依赖注入。我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

总结:

控制反转是目标。依赖注入是我们实现控制反转的一种手段。

控制反转:控制反转:我们将创建对象的控制权交给了Spring。由Spring来控制对象的创建。

依赖注入:应用程序在运行时依赖IOC容器来动态注入组件所需要的某个依赖对象。

AOP

编程中,对象与对象之间,方法与方法之间,模块与模块之间都是一个个切面。

能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

我虽然不用每次都copy代码了,但是,每个接口总得要调用这个方法吧。于是就有了切面的概念,我将方法注入到接口调用的某个地方(切点)。

你可能感兴趣的:(大数据)