Spring学习day1-面向切面编程

4.2 AOP编程

4.2.1概念:

  1. Aspect(切面)

比如说事务、权限等,与业务逻辑没有关系的部分

  1. joinpoint(连接点)

目标类的目标方法。(由客户端在调用的时候决定)

  1. Pointcut(切入点)

所谓切入点是指我们要对那些拦截的方法的定义.

 被纳入spring aop中的目标类的方法。

  1. Advice(通知)

所谓通知是指拦截到joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)

  1. Target(目标对象):

代理的目标对象

  1. Weaving(织入)

是指把切面应用到目标对象来创建新的代理对象的过程.切面在指定的连接点织入到目标对象

JDKProxy代理

SpringAop

目标对象

目标对象

扫描二维码关注公众号,回复: 5549626 查看本文章

拦截器类

切面

拦截器类中的方法

通知

被拦截到的目标类中方法的集合

切入点

在客户端调用的方法(目标类目标方法)

连接点

代理类

AOP代理

代理类的代理方法生成的过程

织入

 

通知根据拦截目标类中的目标方法的位置不一样可以分为:前置通知、后置通知、最终通知、环绕通知、异常通知

4.2.2 AOP实现的两种模式

        1. xml形式
  1. 前置通知

在spring配置文件中声明切面

在spring配置文件中声明目标类

定义切面、切入点、通知

    注:见6.2.3.4

说明:

1、在切面类中,没有必要实现接口,但方法名称要与<aop:before method=”checkSecurity” 中的checkSecurity一样。

2、checkSecurity方法中通过JoinPoint参数可以获得目标类的目标方法名称、参数值等信息。

  1. 后置通知
  1. 没有特殊说明的地方和前置通知是一样的。
  2. 在spring配置文件中

  1. 在拦截器中的方法要和checkSecurity方法一样,有两个参数

              JoinPoint   point    可以获得目标方法和参数值

              Object      val    这里的名字要和returning=”val”中保持一致,指的是方法的返回值。

  1. returning=”val”时,通知里可以有返回参数,这个参数只能决定通知里能不能拿到方法的返回值,和客户端没有关系。

  1.  在执行目标类的目标方法中遇到异常,则不执行后置通知。
  1. 异常通知
  1. 没有特殊说明的地方和前置通知一样
  2. 在spring配置文件中

其中throwing指定了传递异常的参数名称

  1. 在异常通知中(拦截器)中,必须是checkSecurity方法。方法中有两个参数

                JoinPoint    point   可以获得方法的名称、参数

               Throwable   ex    利用ex.getMessage()可以获得异常信息

  1. 最终通知
  1. 没有特殊说明,和前置通知的配置一样。
  2. 在spring配置文件里:

说明:在最终通知中不受异常的影响。也就是说不论目标方法执行的过程中是否抛出异常,最终通知都将执行。

  1. 环绕通知
  1. 没有特殊说明和前置通知的配置保持一致。
  2. 在spring文件中

  1. 在环绕通知中,方法名称为checkSecurity。参数 类型 为ProceedingJoinPoint。

ProceedingJoinPoint的proceed方法相当于invoke方法,调用目标类的目标方法。ProceedingJoinPoint继承了JoinPoint类

  1.  能在方法执行的前后加入额外的代码。

说明:

4.2.2.2Aop注解形式

  1. 前置通知

注意:@Aspectj是按照类型匹配的。

  1. 后置通知

  1. 异常通知

  1. 最终通知

  1. 环绕通知

猜你喜欢

转载自blog.csdn.net/a5421901/article/details/88073636