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方法。

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

SpringBoot之监控器/AOP/拦截器的使用及执行顺序相关推荐

  1. filter过滤器和interceptor拦截器的区别和执行顺序

    1.过滤器 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候 ...

  2. 过滤器和拦截器的不同以及执行顺序和使用场景的总结

    文章目录 过滤器filter和拦截器interceptor的比较 执行顺序 使用场景 过滤器filter和拦截器interceptor的比较 之前看过一篇博客有这么一句话: 过滤器是取你所想,拦截器是 ...

  3. 过滤器和拦截器的区别和执行顺序

    一.两者的区别 1.拦截器 java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同 ...

  4. SpringBoot AOP拦截器

    在Spring里面还提供有一种AOP拦截器配置,不过大部分的AOP拦截器都是围绕着业务层进行拦截处理的.1.建立一个普通的业务操作接口和它的子类:package com.microboot.servi ...

  5. SpringBoot实现过滤器、拦截器与切片

    作者:七印miss juejin.im/post/5c6901206fb9a049af6dcdcf Q:使用过滤器.拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系 过滤器Filter 过滤 ...

  6. SpringBoot实现过滤器、拦截器与切片源码分析

    过滤器Filter 过滤器概念 Filter是J2E中来的,可以看做是Servlet的一种"加强版",它主要用于对用户请求进行预处理和后处理,拥有一个典型的处理链.Filter也可 ...

  7. springBoot之过滤器和拦截器的使用

    在springBoot中,过滤器和拦截器的使用. 过滤器 概述 过滤器是什么? 简单的来说,过滤器就是过滤的作用,在web开发中过滤一些我们指定的url. 过滤器主要做什么? 过滤掉一些不需要的东西, ...

  8. springboot中配置了拦截器后,拦截器无效的解决方案之一

    springboot中配置了拦截器后,拦截器无效的解决方案之一 参考文章: (1)springboot中配置了拦截器后,拦截器无效的解决方案之一 (2)https://www.cnblogs.com/ ...

  9. aop区别 decorator_Decorator或Proxy模式;AOP拦截器

    总结如下:过滤器实现方式在不保证功能前提下,从性能角度考虑有如下先后顺序:Decorator或Proxy模式:AOP拦截器. 考虑使用AOP拦截器时,最好选择那些受众面积比较广的功能,例如一些基础通用 ...

最新文章

  1. python操作微信电脑版_Python使用itchat模块实现简单的微信控制电脑功能示例
  2. nginx 400状态码排查
  3. 基于深度学习网络的运动想象BCI系统及其应用
  4. 今天是周一,又是热的天气笼罩。
  5. PHP与Java使用des加密通讯
  6. 网关冗余--王贝的学习笔记
  7. 专题之六:ckk拉链厂信息化实施记
  8. 活动地推怎么做最有效?
  9. postman导出请求url_postman接口测试之复制多个接口或collections到某个子文件夹或collections下...
  10. Html5+Css3小试牛刀
  11. 极速办公(excel)字体如何改为斜体
  12. 自己动手写操作系统 - Hello DTOS
  13. JavaScript留言板效果代码实例
  14. JavaScript的js文件压缩和格式化工具
  15. 国内.NET论坛源代码不完全搜集
  16. java ppt转图片 失真_java poi 实现ppt转图片(解决图片不高清问题)
  17. 程序设计的最基本的三种结构
  18. 3d布衣天下1手机调试html,真精华布衣天下3d
  19. 关于Ubuntu多显卡服务器,掉显卡的问题
  20. 华为不提示连接计算机,求告知为什么现在华为用usb连电脑手机不显示

热门文章

  1. 安装win10,刻录U盘,还原刻录的U盘
  2. Android第三方集成之一键分享ShareSDK的使用eclipse篇 #CSDN博文精选# #IT# #第三方集成# #安卓#
  3. Python爬虫实战:爬取淘女郎照片
  4. c语言程序结构体排序,如何用C语言的结构体数组中的某一值排序?
  5. c语言程序设计理论考试,《C语言程序设计》理论试题库-程序题100例
  6. 在 npm 发布中文 API 初体验——中国历代纪元
  7. Android系统源码分析/多媒体框架/音频子系统/常用结构体分析-audio.h
  8. i.MX RT开发笔记-02 | i.MX RT1062开发环境搭建(MDK芯片包、NXP SDK详解)
  9. PCIe 均衡技术介绍(电气物理篇)
  10. c语言 整数四则运算