美文网首页
简述Spring AOP基础接口

简述Spring AOP基础接口

作者: XJ2017 | 来源:发表于2020-05-03 18:09 被阅读0次

    概念

    • OOP(Object Oriented Programming)面向对象程序设计
      个人理解:将现实事物抽象为对象,由属性(事物状态)与方法(事物行为)组成。对象即可以表示猫亦可表示人,对象间通过消息传递相互通信,来模拟现实世界中不同事物的联系。
      特性:封装(以对象作为最小单元)、继承(复制上层对象作为自身对象的一部分)、多态(同族对象具备相同行为但行为的结果不同)
    • AOP(Aspect Oriented Programming)面向切面程序设计
      个人理解:将OOP抽象后的对象组按照某个维度再次抽象,形成切面对象。
      使用场景:权限校验、事务处理、日志记录

    AOP组织

    AOP Alliance项目是几个对AOP和Java感兴趣的软件工程人员之间的联合开源项目(http://aopalliance.sourceforge.net/

    AOP实现

    • 编译期实现
      • AspectJ (TM): 使用专门的Java编译器实现
    • 运行期实现
      • Spring AOP:基于动态代理(jdk的动态代理或者cglib的动态代理)实现

    Spring AOP

    • 部分AOP Alliance接口(Spring中可以使用任何AOP Alliance MethodInterceptor)

      1.部分AOP Alliance接口 1588434318(1).png
      1. 接口说明
        • Joinpoint(连接点):运行时连接点表示在连接点上发生的事件()
        • Invocation:表示程序中的调用(运行时的连接点)
        • Advice(通知):当连接点上事件被触发时的处理逻辑
        • Interceptor:表示通用拦截器
      2. 接口关系 屏幕截图 2020-05-02 10.42.40.png
      3. 使用案例
         class DebuggingInterceptor implements MethodInterceptor, ConstructorInterceptor {
        
         Object invoke(MethodInvocation i) throws Throwable {
           debug(i.getMethod(), i.getThis(), i.getArgs());
           return i.proceed();
         }
        
         Object construct(ConstructorInvocation i) throws Throwable {
           debug(i.getConstructor(), i.getThis(), i.getArgs());
           return i.proceed();
         }
        
         void debug(AccessibleObject ao, Object this, Object value) {
           ...
         }
        }
        
    • Spring AOP接口(基于AOP Alliance扩展接口)
      1. 扩展内容:
        • Introduction support:org.springframework.aop.IntroductionInfo(支持在被代理对象中新增行为)
        • A Pointcut abstraction:org.springframework.aop.Pointcut(提供连接点过滤条件的接口,支持类过滤与方法(包括方法参数)过滤)
        • A full range of advice types, including around, before, after returning and throws advice(支持更多Advice类型)
        • 高扩展:支持在不修改核心框架的情况下插入任意自定义Advice类型
      2. 接口说明
        • IntroductionInfo:定义在被代理对象新增行为的集合
        • MethodMatcher:检查目标方法是否能被通知(属于Pointcut一部分)
        • ClassFilter:检查目标类是否能被通知
        • Pointcut:通过MethodMatcher与ClassFilter过滤连接点,形成切面范围
        • Advisor:包含Advice与过滤Joinpoint的过滤器(如:pointcut)的组合
        • TargetSource:用于获取当前被代理的对象
        • SpringProxy:由Spring生成代理的标识
      3. 接口关系 aopspring.jpg

    相关文章

      网友评论

          本文标题:简述Spring AOP基础接口

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