spring-aop浅析

简介 

    这篇说说spring的aop对AspectJ的支持,我们知道AspectJ植入时机有3种:compile-time、post-compile、load-time,那spring是如何支持AspectJ的呢?要搞清楚这些得搞个demo工程翻翻代码,可以基于spring构建,也可以基于springboot构建,当然2种方式都挺简单,boot不过是替我们开启了AopAutoConfiguration。因为demo非常简单,这里不说这个demo了,直接看看原理。

组件分析

    先看看AspectJAutoProxyRegistrar,它会向容器中注册一个AnnotationAwareAspectJAutoProxyCreator,spring对AspectJ的主要的支持就从这个组件开始的。

    即spring本身提供了自动代理的创建能力,整合AspectJ时扩展了对AspectJ的处理能力,这样可以把AspectJ的切面变成Advisor,进而创建target的代理对象。

  回顾下基于spring-aop是如何使用AspectJ的,1、引入依赖;2、写个切面注入到spring容器中;3、开启自动代理创建功能。开启自动代理创建功能时向容器中导入AnnotationAwareAspectJAutoProxyCreator,利用BeanPostProcessor机制来创建代理,在此之前根据Aspect创建Advisor。而处理Aspect变成Advisor变成了Aspect植入target另一种方式。

总结

这样看来整个代理的构建过程就是寻找Advisor,创建代理(jdk/cglib),这样也就体现了aop的规范实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&一步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值