第三章:Spring AOP

作者: Y_Jaaao | 来源:发表于2020-04-02 18:47 被阅读0次

    什么是AOP

    • AOP——面向切面编程。是面向对象编程(OOP)的补充。

    AOP术语

    1
    2

    JDK动态代理

    • 动态代理对象必须实现一个或多个接口
    image
    UsrDao
    UserDaoImpl
    MyAspect.png
    JdkProxy

    若JdkTest执行成功,则会在控制台显示模拟检查...


    JdkTest

    CGLIB代理

    • 采用底层字节码技术,对指定目标类生成一个子类,并对子类进行增强。在Spring的核心包中已经集成了CGLIB所需要的包,座椅开发中不需要另外导入JAR包
    • JDK动态代理的使用非常简单,但它有一定的局限性,使用动态代理的对象必须实现一个或多个接口。若要对没有实现接口的类进行代理,则用CGLIB代理


      UserDao
      CglibProxy
      CglibTest

    Spring的通知类型

    Spring按照通知在目标类方法中的连接点位置(5类)

    • 环绕通知
      在目标方法执行前后实施增强,可以应用于日志、事务管理等功能
    • 前置通知
      在目标方法执行前实施增强,可以应用于权限管理等功能
    • 后置通知
      在目标方法执行后实施增强,可以应用于关闭流、上传文件、删除临时文件等功能
    • 异常抛出通知
      在方法抛出异常后实施增强,可以应用于处理异常记录日志等功能
    • 引介通知
      在目标类中添加新的方法和属性,可以应用于老版本程序

    ProxyFactoryBean

    • ProxyFactoryBean是FactoryBean接口的实现类,FactoryBean负责实例化一个Bean。ProxyFactoryBean负责为其他Bean创建代理实例。在Spring中,使用ProxyFactoryBean是创建AOP代理的基本方式。


      常用可配置属性

    基于XML的声明式AspectJ

    • 使用AspectJ实现AOP有2种方式:
      1. 基于XML的声明式AspectJ:通过XML文件来定义切面、切入点、通知,所有切面、切入点、通知都必须定义在<aop:config>元素内
      <aop:config>元素及子元素
      (1)配置切面<aop:aspect>:将已定义好的Spring Bean转换成切面Bean,所以要在配置文件种先定义一个普通的Spring Bean。 <aop:aspect>通常指定:id(该切面的唯一标识名称)、ref(引用普遍的Spring Bean)
      (2)配置切入点<aop:pointcut>:当其作为<aop:aspect>元素的子元素定义时,表示该切入点是全局切入点,可被多个切面所共享;当其作为<aop:aspect>元素的子元素时,该切入点只对当前切面有效。
      <aop:pointcut>通常指定:id(该切面的唯一标识名称)、expression(指定切入点关联的切入点表达式)
      1
      2
      第一个 *:代表所有类型
      第二个 *:代表所有类(类名)
      第三个 *:代表所有方法(方法名)
      1
      2
      3
      4
      5
      6
      ps:带有?表示可配置项,其他部分为必须配置项
      (3)配置通知<aop:aspect>:其子元素可配置5种常用通知
      常用通知
      2. 基于注解的声明式AspectJ

    基于注解的声明式AspectJ-new

    AspectJ的注解及描述

    Java的reflection(反射)
    https://www.cnblogs.com/hongten/p/hongten_java_reflection.html

    相关文章

      网友评论

        本文标题:第三章:Spring AOP

        本文链接:https://www.haomeiwen.com/subject/wdtouhtx.html