spring:《spring实战》读后感三

1.AOP术语:

通知(Advice)

    切面的工作被称为通知。同时通知还解决了何时执行这个工作。

    Spring切面可以应用5种类型的通知:
          前置通知(Before) : 在目标方法被调用之前调用通知功能;
          后置通知(After) : 在目标方法完成之后调用通知, 此时不会关心方法的输出是什么;
          返回通知(After-returning) : 在目标方法成功执行之后调用通知;
          异常通知(After-throwing) : 在目标方法抛出异常后调用通知;
          环绕通知(Around) : 通知包裹了被通知的方法, 在被通知的方法调用之前和调用之后执行自定义的行为;

切点(pointcut)

       一个切面并不需要通知应用的所有连接点。 切点有助于缩小切面所通知的连接点的范围。

连接点(join point)

    连接点是在应用执行过程中能够插入切面的一个点。

切面(Aspect)

  切面是通知和切点的结合。 通知和切点共同定义了切面的全部内容——它是什么, 在何时和何处完成其功能。

织入(Weaving)

   织入是把切面应用到目标对象并创建新的代理对象的过程。 切面在指定的连接点被织入到目标对象中。 在目标对象的生命周期里有多个点可以进行织入:
      编译期: 切面在目标类编译时被织入。 这种方式需要特殊的编译器。 AspectJ的织入编译器就是以这种方式织入切面的。
      类加载期: 切面在目标类加载到JVM时被织入。 这种方式需要特殊的类加载器(ClassLoader) , 它可以在目标类被引入应用之前增强该目标类的字节码。 AspectJ 5的加载时织入(load-timeweaving, LTW) 就支持以这种方式织入切面。
     运行期: 切面在应用运行的某个时刻被织入。 一般情况下, 在织入切面时, AOP容器会为目标对象动态地创建一个代理对象。Spring AOP就是以这种方式织入切面的。

2.Spring提供了4种类型的AOP支持:

    基于代理的经典Spring AOP;
    纯POJO切面;
    @AspectJ注解驱动的切面;
    注入式AspectJ切面(适用于Spring各版本)

3.Spring AOP所支持的AspectJ切点指示器

       Spring借助AspectJ的切点表达式语言来定义Spring切面

AspectJ指
示器
描 述
arg() 限制连接点匹配参数为指定类型的执行方法
@args() 限制连接点匹配参数由指定注解标注的执行方法
execution() 用于匹配是连接点的执行方法
this() 限制连接点匹配AOP代理的bean引用为指定类型的类
target 限制连接点匹配目标对象为指定类型的类
@target() 限制连接点匹配特定的执行对象, 这些对象对应的类要具有指定类
型的注解
within() 限制连接点匹配指定的类型
@within() 限制连接点匹配指定注解所标注的类型(当使用Spring AOP时, 方
法定义在由指定的注解所标注的类里)
@annotation 限定匹配带有指定注解的连接点


4.使用注解创建切面

    使用注解来创建切面是AspectJ 5所引入的关键特性。AspectJ面向注解的模型可以非常简便地通过少量注解把任意类转变为切面。
                                                        Spring使用AspectJ注解来声明通知方法

注 解 通 知
@After 通知方法会在目标方法返回或抛出异常后调用
@AfterReturning 通知方法会在目标方法返回后调用
@AfterThrowing 通知方法会在目标方法抛出异常后调用
@Around 通知方法会将目标方法封装起来
@Before 通知方法会在目标方法调用之前执行

       @Pointcut注解能够在一个@AspectJ切面内定义可重用的切点。



    

发布了557 篇原创文章 · 获赞 40 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/m0_37564426/article/details/104010065