你不可不知的Spring IOC/AOP

首先我们来说说Spring中AOP是什么吧?

AOP全称(Aspect Oriented Programming)顾名思义面向切面!它能够让我们在不影响原有功能的前提下,为软件横向扩展 功能 .

Spring增强类型有五种

1.前置增强:org.springframework.aop.BeforeAdvice是前置增强顶层接口,因为Spring只支持方法的增强,其子接口MethodBeforeAdvice是目前可用的前置增强。表示在目标方法执行前实施增强。

2.后置增强:org.springframework.aop.AfterReturningAdvice是目前可用的后置增强,表示在目标方法执行后实施增强。

3.环绕增强:org.aopalliance.intercept.MethodInterceptor代表了环绕增强,表示在目标方法执行前后实施增强。直接使用了AOP联盟定义的接口。

4.异常增强:org.springframework.aop.ThrowsAdvice代表了异常抛出增强,表示在目标方法抛出异常后实施增强。

5.最终增强:org.springframework.aop.IntroductionInterceptor代表引介增强,表示在目标类中添加一些新的方法和属性。

AOP核心概念

1、横切关注点

对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

2、切面(aspect)

类是对物体特征的抽象,切面就是对横切关注点的抽象

3、连接点(joinpoint)

被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

4、切入点(pointcut)

对连接点进行拦截的定义

5、通知(advice)

所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

6、目标对象

代理的目标对象

7、织入(weave)

将切面应用到目标对象并导致代理对象创建的过程

8、引入(introduction)

在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

再者我们来看Spring中的IOC是什么呢?

IOC全称(Inversion of control)顾名思义控制反转,也可以说是DI(Dependency Injection)依赖注入!

(二、我们强大的IOC)

(1)参与者都有谁:

        一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。
        又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。

(2)谁依赖于谁:

        当然是某个对象依赖于IoC/DI的容器

(3)为什么需要依赖:

        对象需要IoC/DI的容器来提供对象需要的外部资源

(4)谁注入于谁:

        很明显是IoC/DI的容器 注入 某个对象

(5)到底注入什么:

        就是注入某个对象所需要的外部资源

(6)谁控制谁:

        当然是IoC/DI的容器来控制对象了

(7)控制什么:

        主要是控制对象实例的创建

(8)为何叫反转:

        反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。

猜你喜欢

转载自blog.csdn.net/qq_41756778/article/details/81565766
今日推荐