AOP原理分析(三)从Spring的AOP说开去

源码 2024-9-24 19:36:22 14 0 来自 中国
前面两篇文章我们解说了整个AOP切面的实现,刚开始我以为AOP也就这么多东西了,而当我总结起来时才发现,这仅仅是AOP的开始,信赖你看完本篇文章会有:曲径通幽,豁然开朗 的感觉
从AOP到方法论

我们还是来看看AOP为我们搭建了一个怎样的框架(大概说一个黑盒吧):整个链路的流程如下:
准备阶段:查找全部加强器--> 筛选可以应用到当前对象的加强器 --> 构建署理对象
实验阶段:当署理对象的方法被调用时 --> 构建责任链 --> 实验时走责任链逻辑;
此中查找全部的加强器:Spring会获取全部的Advisor,假如开启了@Aspect的功能就会额外加载标有@Aspect的类,然后将标有@Before、@After等注解的方法封装成Advisor【InstantiationModelAwarePointcutAdvisorImpl】;
筛选可以应用到当前对象的加强器:重要分类两类的筛选:一类是IntroductionAdvisor即类级别的切入,这一类是通过Advisor中的ClassFilter来进行判定是否切入当前对象;另一个是PointcutAdvisor即方法级别的切入,会通过PointCut中的ClassFilter和MethodMatcher分别来进行类及方法级别的筛选,判定是都切入当火线法。构建署理对象,以及实验时责任链的封装这些都不须要我们来管的。总的来说,我们假如须要使用Sping的这套AOP框架来实现我们的业务逻辑,我们只须要写好自己的加强器(Advisor)就可以了,而这个过程中就包罗了两个重要的部分:1、编写Advice,也就是我们的拦截逻辑;2、拦截的筛选规则,也就是上面提到的ClassFilter大概PointCut;也就是告诉Spring你要拦截什么,怎么拦截。
好了,说到这里我信赖很多人应该都明白怎样通过Spring提供的AOP框架来实现自己的业务逻辑拦截,假如没懂也不要紧,接下来我们看看Spring家自己是如安在这个AOP框架的底子上扩展出更多功能的:
AOP方法论在Spring中的身影

1、Spring的事件实现

要看Spring的事件是怎样实现的,我们看看开启Spring事件时都引入了什么?那我们就要从@EnableTransactionManagement注解到入了什么组件到容器中下手,let we see see :
@EnableTransactionManagement导入了TransactionManagementConfigurationSelector类,TransactionManagementConfigurationSelector帮我们导入了AutoProxyRegistrar和ProxyTransactionManagementConfiguration这两个类,前者是为了能开启AOP的功能,我们先不说,ProxyTransactionManagementConfiguration这个类才是Spring事件发挥作用的关键先生,一起来一探究竟吧:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:33, Processed in 0.156659 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表