栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring-AOP分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring-AOP分析

Spring-AOP分析 1、AOP定义 AOP基本概念
  • AOP是一种编程思想,面向切面编程

  • 使用动态代理机制

    • Cglib
    • JDK
  • 概念

    • 切面(Aspect):在AOP中切面指的就是“切面类”切面类中管理着增强的公共行为代码(通知)和切入方式(切点)。由通知(Aovice)和切点(Pointcut)组成。
    • 连接点(Join point):在Spring AOP中,一个连接点总是代表一个方法的执行,即需要增强的方法。
    • 通知(Aovice):在切面的某个特定的连接点上执行的动作。Spring在内以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。通知类型:
      • 前面(Before)
      • 后面(After)
      • 异常(afterThrowing)
      • 返回值(afterReturning)
      • 环绕(包含前后Around)
    • 目标对象(Target):目标对象指将要被增强的对象。即包含主业务逻辑的类的对象。
    • 切点(Pointcut):匹配连接点的断言。通知和切点表达式相关联,并在满足这个切点的连接点上运行(例如,当执行某个特定名称的方法时)。Spring默认使用AspectJ切点语义。
    • 顾问(Advisor):顾问是Advice的一种包装体现,Advisor是Pointcut以及Advice的一个结合,用来管理Advice和Pointcut。
    • 织入(Weaving):将通知切入连接点的过程叫织入
    • 引入(Introductions):可以将其他接口和实现动态引入到targetClass中
AOP的三大核心概念
  • 切点(Pointcut):匹配连接点的断言。具体定位的连接点。

  • 通知(Aovice):在切面的某个特定的连接点上执行的动作。

  • 顾问(Advisor):是Advice的一种包装体现,Advisor是包括Pointcut和Advice的一个结合,用来管理Advice和Pointcut,是将Advice注入程序中Pointcut位置的代码。

AOP的三种实现方式
  • 原生API实现AOP
  • 自定义方法实现AOP
  • 注解实现AOP
2、AOP过程分析: AOP切面解析过程
  1. 在真正实例化Bean之前会对切面类进行解析;
  2. 判断是否解析过,如果解析过直接从缓存中取;
  3. 如果没有解析过,遍历所有的BeanNames,解析被@Aspect注解标记的类;
  4. 提取这些类中的所有Advice通知方法封装成Advisor;
  5. 将提取出的Advisors放入缓存;
AOP创建代理过程
  1. 在初始化Bean后会创建代理;
  2. 如果之前在循环依赖中创建过动态代理,在初始化后则不需要再次创建动态代理;
  3. 如果之前在循环依赖没有创建过动态代理,就找到当前Bean匹配的advisor(根据切点规则筛选),如果没有找到符合的advisor就返回原生Bean;
  4. 创建动态代理
    • 如果设置了 不会进if,说明强制使用cglib
    • 检查当前Bean是否有接口,如果有则使用JDK代理,如果没有则使用CGLIB代理
AOP调用代理过程
  1. 调用方法会调用动态代理类的invoke方法;
  2. 将advice全部转会为拦截器通过责任链模式调用;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号