SpringBoot之监控器AOP拦截器的使用方法以及执行顺序

SpringBoot之监控器AOP拦截器的使用方法以及执行顺序,第1张

SprignBoot集成了很多Spring中优秀的组件,比如①监控器,②AOP,③拦截器

先简单的说一下各组件的含义和作用以及使用方法。

①监控器

监控器含义和作用:是Servlet中一种特殊的类,用于ServletContext、ServletRequest、HttpSession的创建、销毁过程中的增强处理,从而达到完成某一任务的监控的目的。比如网站资源缓存、站点在线人数统计、获取用户请求信息等等。

监控器的使用方法:对应的类都可以去实现对应的监控器接口和重写对应方法。比如:ServletContex监控器t实现ApplicationListener接口,重写onApplicationEvent();

ServletRequest监控器实现ServletRequestListener接口,重写requestInitialized()和requestDestroyed();

HttpSession监控器实现HttpSessionListener接口,重写sessionCreated()和sessionDestroyed()。

还有一种自定义的监控器,分三步:①需要一个监控类继承 ApplicationEvent类;②还需要一个监控的配置类,实现ApplicationListener接口,并重写onApplicationEvent(),将写好的监控类作为参数传递进来,进而对监控类进行一些相关的业务 *** 作;③最后写一个发布监控器的类,引用ApplicationContext对象利用publishEvent(()进行发布。

②AOP

AOP含义与作用:面向切面编程,分离关注点。各切面各司其职,灵活组合。拥有易配置、易插拔的程序结构。

AOP的使用方法:拥有两种常见的配置方法,一种j基于包的路径execution(“* com.example.demo.*.*(..)”),其中第一个*表示返回任意类型,注意后面有空格,第二个*表示指定路径下的任意包名,第三个*(..)表示该包下的所有方法;一种基于注解@annotation,作用到指定的注解上。

③拦截器

拦截器的含义与作用:拦截器又是AOP中一种特殊的类,作用在控制层,对用户请求的资源进行拦截和处理。

拦截器的使用方法:使用拦截器分两步,Step1定义拦截器:实现鼻祖接口HandInterceptor,重写preHandle()、postHandle()、afterCompletion();Step2配置拦截器:注意2.0之前和之后的版本,2.0之前继承WebMvcConfigurerAdaptor类,而2.0之后的版本继承WebMvcConfigurationSupport类,都要重写addInterceptor()。

在使用WebMvcConfigurationSupport需要注意的是默认拦截静态资源,想要不拦截静态资源还需要重写addResourceHandlers();也可以直接实现WebMvcConfigurer接口。由于他们之间的特性,所以我们可以根据前后端是否分离可以选择性使用。WebMvcConfigurationSupportt不访问前端静态资源,所以适用于前后端分离;而WebMvcConfigurer不拦截静态资源,前后端不分离可以用。


说完他们之间的定义,我们现在可以看看他们之间的执行顺序关系。

可以在IDEA里写一个Demo,分别使用以上的监控器、AOP、拦截器。源码太多太杂,就不一 一上传了。

通过启动项目,我们可以看出:

 进而,我们可以推断出他们之间的执行顺序关系为:

监控器ServletRequest initnilized()  >  拦截器preHandler()  >  AOP doBefore()  > 

AOP afterReturning() / afterThorwing()  >  AOP doAfter()  > 拦截器postHandle()  >

l拦截器afterCompletion()  >  监控器ServletRequest destoryed()

一句话概括:程序先走监控器层的初始化方法;然后走拦截器的预前处理方法;然后执行完AOP切面;在返回到拦截器层处理后面的post方法和after方法;最后到监控器层处理最后的destoryed方法。

一张图让你看懂他们的层次关系:

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/736290.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-28
下一篇2022-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存