Spring注解学习_AOP原理5_SpringAOP总结
¶Spring AOP总结:
- @EnableAspectJAutoProxy 开启AOP功能
- @EnableAspectJAutoProxy 会给容器中注册一个组件AnnotationAwareAspectJAutoProxyCreator
- AnnotationAwareAspectJAutoProxyCreator是一个后置处理器
- 我们由容器创建流程看AnnotationAwareAspectJAutoProxyCreator是如何被注册到容器中并在容器中发挥作用的:
- registerBeanPostProcessors() : 注册后置处理器,此时会创建AnnotationAwareAspectJAutoProxyCreator
- finishBeanFactoryInitialization() 初始化剩下的单实例bean
- 创建业务逻辑组件和切面组件
- AnnotationAwareAspectJAutoProxyCreator拦截组件的创建过程
- 组件创建完成后,判断组件是否需要增强
- 需要,则:切面的通知方法,包装成增强器( Advisor ),给业务逻辑创建一个代理对象( cglib )
- 执行目标方法:
- 代理对象执行目标方法
- CglibAopProxy().intercept() 进行拦截:
- 得到目标方法的拦截器链(增强器包装成拦截器MethodInterceptor)
- 利用拦截器的链式机制,依次进入每一个拦截器进行执行
- 执行效果:
正常执行:前置通知 --》 目标方法 --》 后置通知 --》 返回通知
出现异常:前置通知 --》 目标方法 --》 后置通知 --》 异常通知
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,邮件至 708801794@qq.com
文章标题:Spring注解学习_AOP原理5_SpringAOP总结
文章字数:270
本文作者:梅罢葛
发布时间:2020-04-06, 22:32:08
最后更新:2020-04-06, 22:49:45
原始链接:https://qiurungeng.github.io/2020/04/06/Spring%E6%B3%A8%E8%A7%A3%E5%AD%A6%E4%B9%A0-AOP%E5%8E%9F%E7%90%865-SpringAOP%E5%8E%9F%E7%90%86%E6%80%BB%E7%BB%93/