码迷,mamicode.com
首页 > 编程语言 > 详细

Spring AOP

时间:2020-02-01 12:40:54      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:code   讲解   intercept   lis   领导   图片   dynamic   cto   顺序   

此文主要是对于spring中AOP实现的一些思考总结 图。

 

一、先认识两个AOP功能类

  1、根据一个表达式判断一个Method是否匹配。

技术图片

  2、根据拦截类类名和拦截器的方法名,获取指定拦截器方法Method。(拦截器即Advice)

技术图片

二、讲解一个策略ReflectiveMethodInvocation(重要!重要!重要!)

  一个可以实现按一定规则(before、afterReturning、afterThrowing等)链式调用增强方法的策略ReflectiveMethodInvocation。如下图:

技术图片

  可以这样理解:

  假设有这么一个公司:有员工A(一个小伙子)、B(一枚美女)和领导。
  其中:A有工作任务before[代号invokeAdviceMethod:before]、B有工作任务after[代号invokeAdviceMethod:after],领导有一个会议target[代号invokeJoinpoint]。
  时间顺序是:before-target-after。
  那么今天的故事就是这样的:
   领导问A:"小伙子今天的事情做完了吗?"。A调用before,然后调用proceed()告诉领导说:"我做完了";
   领导问B:"美女,今天的事情做完了吗?"。B调用proceed(),告诉领导说:"还没有呢,一会儿才能玩";
   领导说:"好吧好吧,没事,那我们先开会吧",然后调用target,开始会议;
   会议结束后,领导对美女B说:"赶紧把今天的事情做完我们就下班了"。B这才调用after。过了一会儿,B的工作也做完了。
   ---到此,故事也已经接近尾声了---
   美女走到领导跟前,对领导说:"今天的任务已经完成了",领导说:"好的,那你下班吧"。美女:"拜拜"。
   领导走到小伙子跟前,说:"今天的事情已经全部完成了,下班吧"。小伙子陷入了沉思.......

三、AopProxyFactory

  对以上的封装:
 AopConfig<-AopConfigSupport:包含有:advice拦截器集合、target目标对象。
  主要作用是提供一个方法:通过指定的方法获取其匹配的拦截器集合List<MethodInterceptor>。封装到DynamicAdvisedInterceptor中,最终传递给ReflectiveMethodInvocation去链式处理。  
  最终封装到AopProxyFactory中,如下图所示:

技术图片

 

Spring AOP

标签:code   讲解   intercept   lis   领导   图片   dynamic   cto   顺序   

原文地址:https://www.cnblogs.com/zomicc/p/12247992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!