美文网首页
Spring AOP的实现模式

Spring AOP的实现模式

作者: 攻城狮Chova | 来源:发表于2021-09-01 20:40 被阅读0次
  • 代理模式: 接口 + 真正实现类 + 代理类
    • 真正实现类和代理类都需要实现接口
    • 实例化时使用代理类进行实例化
    • Spring AOP的作用就是生成一个代理类来替换真正的实现类来对外提供服务
  • Spring中代理的实现模式:
    • Spring AOP中使用 @EnableAspectJAutoProxy注解,将BeanPostProcessor的子类AnnotationAwareAspectJAutoProxyCreator.class注入到容器中,然后在Bean生命周期中的后置处理器里判断切面的情况进行生成代理增强器,并且利用动态代理机制生成代理类
    • 真正实现类的逻辑包含在getBean() 方法中
    • getBean() 方法返回一个Proxy代理类实例
      • Proxy代理类实例时Spring通过JDK动态代理或者CGLIB代理动态生成的
  • 因为Spring AOP中要通过getBean() 方法查找和实例化容器中的Bean, 所以Spring AOP只能作用于Spring容器中的Bean, 无法作用于不是使用Spring IOC容器管理的对象
  • 总结:
    • Spring AOP的核心是代理创建器AbstractAutoProxyCreator的子类,本质上是一个Bean的后置处理器
    • Spring根据配置将相应的代理创建器注册到Spring容器中.如果项目中配置 @EnableAspectJAutoProxy注解 ,Spring就会将AnnotationAwareAspectJAutoProxyCreator注册到Spring容器中
    • 因为代理创建器是一个Bean的后置处理器,所以会在Bean的初始化阶段被调用
    • 代理创建器会判断当前的Bean是否需要被代理,如果不需要代理就直接将原Bean实例返回.如果需要代理就使用动态代理技术根据当前Bean作为目标类创建一个代理类,并且将横切代码注入到代理类中,然后生成一个代理类的实例并返回,使用这个实例作为Bean的实例
    • 如果这个Bean是单例的,那么这个代理对象就会放置到Spring容器的单例池中,这样使用getBean() 时,就可以直接从Spring容器中直接获取这个代理对象

相关文章

  • Spring Aop、拦截器、过滤器的区别

    Spring AOP Spring AOP,是AOP的一种实现,使用的是代理模式。 Filter Filter(过...

  • Spring AOP源码02 - 代理的创建

    Spring AOP 的实现 Spring AOP 不同于 AspectJ 的 AOP 实现,是在 runtime...

  • 静态代理和动态代理

    代理模式是Java模式中很重要的一个。特别是动态代理模式是Spring AOP实现的基石,也是我们理解AOP原理的...

  • SpringBoot + Vue 后台管理系统(六):系统操作日

    AOP 面向切面编程。主要功能是对方法的加强。其实现是居于代理模式使用。Spring事务就是居于AOP的实现。首先...

  • spring-aop

    aop概念aop概念aop术语AOP实现方式1、spring-aop(使用xml文件实现AOP)2、AspectJ...

  • Spring之AOP面向切面编程

    十、AOP面向切面编程 目录:什么是AOP、AOP在Spring中的作用、Spring实现AOP 1.什么是AOP...

  • Spring

    Spring的aop怎么实现,Spring的aop有哪些实现方式 AOP常用的实现方式有两种,一种是采用声明的方式...

  • Spring AOP的实现模式

    代理模式: 接口 + 真正实现类 + 代理类真正实现类和代理类都需要实现接口实例化时使用代理类进行实例化Sprin...

  • Spring AOP 实现原理

    Spring AOP 实现原理 静态代理 众所周知 Spring 的 AOP 是基于动态代理实现的,谈到动态代理就...

  • Spring(3)——AOP

    Spring学习总结——Spring实现AOP的多种方式

网友评论

      本文标题:Spring AOP的实现模式

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