美文网首页
[095]技术-写一个spring拦截器

[095]技术-写一个spring拦截器

作者: shawnxjf | 来源:发表于2017-12-16 21:46 被阅读0次

背景

平常写代码很多时候都是copy代码,这样很不利于我们去理解背后的知识和逻辑。只有了解了概念及其逻辑才能迅速运用到新的知识领域中。
今天就来梳理spring拦截器背后概念和原理。

整体概念

想象你的程序有如下程序执行流 (A -> B| C-> D),我想不修改以后代码的情况下增加某一项功能 。在这里意思就是在A ->B和C->D中间统一打印log,这就类似于在程序代码中切了一刀进行拦截。
其拦截结果类似于:

{
A...
log.()
B...
}
{
C...
log.()
D...
}

我们可以把上面逻辑想象成如下画面:


image.png

一刀从程序中间拦腰切断形成一个切面,这个切面我们称之为aspect;在这个切面上干什么事情就成为advisor;
切面在程序的拦截点就称为pointcut;advisor在pointcut上所具有的行为有around,before,after等。
所以我们在xml配置文件中把上述的概念及其关系表现出来:

<bean id="advisorId" class = "com.loginterceptor">
<aop:config>
     <aop:pointcut id = "pointcutId"  expression="executing(* com.facishare.sail.*.*.*(..)"></aop:pointCut>
    <aop:advisor pointcut-ref= "pointcutId"  adivice-ref="advisorId">
</aop:config>

相关文章

网友评论

      本文标题:[095]技术-写一个spring拦截器

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