当前位置: 首页 > news >正文

Spring定时任务与Spring MVC拦截器

Spring定时任务与Spring MVC拦截器

文章目录

  • Spring定时任务与Spring MVC拦截器
    • 1.定时任务
      • 1.1定时任务`@Scheduled`
      • 1.2创建多线程定时任务
    • 2.拦截器
      • 2.1拦截器与过滤器的区别
      • 2.2SpringBoot中使用拦截器
        • 2.2.1实现`Handlerlnterceptor`接口

1.定时任务

Spring框架提供了强大的定时任务支持。通过使用@Scheduled注解,可以将一个方法标记为定时任务,并指定任务的执行时间规则。可以设置任务在固定的时间点执行,也可以设置任务在一定的时间间隔内重复执行。Spring的定时任务功能更加灵活,支持各种时间表达式,也可以配置多线程执行任务。

1.1定时任务@Scheduled

  • 创建StaticScheduleTask
  • cron= [秒] [分] [小时] [日] [月] [周] [年]
@Configuration// 1.配置类@EnableScheduling// 2.开启定时任务publicclassStaticScheduleTask{// 3.添加定时任务 每5秒执行一次@Scheduled(cron="0/5 * * * * ?")publicvoidconfigureTasks(){System.out.println("执行静态定时任务"+Thread.currentThread().getName());}}输出结果: 执行静态定时任务scheduling-1执行静态定时任务scheduling-1执行静态定时任务scheduling-1

1.2创建多线程定时任务

@Configuration // 1.配置类 @EnableScheduling // 2.开启定时任务 @EnableAsync // 开启多线程 public class StaticScheduleTask { // 3.添加定时任务 每5秒执行一次 @Scheduled(cron = "0/5 * * * * ?") @Async// 多线程执行 异步 public void configureTasks(){ System.out.println("执行静态定时任务"+Thread.currentThread().getName()); } } 输出结果: 执行静态定时任务task-1 执行静态定时任务task-2 执行静态定时任务task-3

2.拦截器

SpringMvc的处理拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理,开发可以自己定义一些拦截器来实现特定功能。

2.1拦截器与过滤器的区别

  • 过滤器

    • servlet规范中的一部分,任何java web程序都可以使用。

    • url-pattern中配置之后,可以对所要访问的资源进行拦截

  • 拦截器拦截器

    • SpringMvc框架自己的,只有使用了SpringMvc框架工程才能使用。
    • 拦截器只会拦截访问控制器的方法,如果访问的是jscssimage…是不会进行拦截的

2.2SpringBoot中使用拦截器

2.2.1实现Handlerlnterceptor接口
@ComponentpublicclassLoginInterceptorimplementsHandlerInterceptor{//preHandle是请求执行前执行的@OverridepublicbooleanpreHandle(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse,Objecto)throwsException{System.out.println("进入拦截器");returntrue;}//postHandler是请求结束执行的 当preHandle返回true才会执行publicvoidpostHandle(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse,Objecto,ModelAndViewmodelAndView){System.out.println("请求结束执行");}//afterCompletion是视图渲染完成后才执行的publicvoidafterCompletion(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse,Objecto,Exceptione)throwsException{System.out.println("视图渲染完成后执行");}}

2.2.2实现WebMvcConfigurer接口配置拦截路径

  • 三种方式

    • 继承WebMvcConfigurerAdapter(spring5.0 以弃用,不推荐)
    • 实现WebMvcConfigurer(推荐)
    • 继承WebMvcConfigurationSupport会导致SpringBoot自动配置失效
  • 实现WebMvcConfigurer

    addlnterceptor:需要一个实现Handlerlnterceptor接口的拦截器实例

    addPathPaterns:用于设置拦截器的过滤路径规则

    addPathPatterns(“/**”)对所有请求都拦截

    excludePathPatterns:用于设置不需要拦截的过滤规则

    拦截器主要用途:进行用户登录状态的拦截,日志的拦截等

@ConfigurationpublicclassWebJavaBeanConfigurationimplementsWebMvcConfigurer{@AutowiredprivateLoginInterceptorloginInterceptor;publicvoidaddInterceptors(InterceptorRegistryregistry){registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/user/login").excludePathPatterns("/user/logout");}}
http://www.jsqmd.com/news/110464/

相关文章:

  • Obsidian Templater插件终极指南:从零到完全掌握
  • hertzbeat使用记录
  • 网球追踪系统:3大核心功能让比赛分析更智能
  • 为什么 IT 事件管理决定了一家企业的“稳定下限”?被忽视却最真实的运维能力
  • 物流运输Agent如何实时调整路线?5大核心技术揭秘
  • 2025年知名度高的橡胶垫厂家TOP5:经验丰富的橡胶垫生产厂权威测评指南 - mypinpai
  • 如何用开源IFC工具解决BIM数据难题?
  • ELPV数据集实战指南:太阳能电池缺陷检测的完整解决方案 [特殊字符]
  • 【从云端到终端】:边缘AI Agent模型压缩的3个关键转折点
  • Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models
  • 【MCP学分体系深度解析】:为什么90%的IT人第一年就踩坑?
  • Windows截图终极方案:独立OCR识别工具完整指南
  • 2025年比较好的螺旋风管加工/长沙风管厂家最新热销排行 - 品牌宣传支持者
  • 博图
  • 【电力故障诊断算法核心机密】:20年专家揭秘Agent智能诊断背后的5大关键技术
  • 2025年全国美术中考培训排名:备考西美附中哪家机构靠谱? - myqiye
  • Clipper2几何运算库终极指南:从基础应用到性能优化完整解析
  • 国标GB28181算法算力平台EasyGBS高效协同的视频监控服务方案
  • JayDeBeApi:Python与Java数据库的无缝连接桥梁
  • 2025年北京科技企业孵化器实力排名:创享独角兽团队专业度引领行业 - 工业推荐榜
  • 官方渠道 vs 第三方工具,MCP量子认证成绩查询哪种更快更安全?
  • 边缘Agent资源调度实战(从理论到落地的9个关键步骤)
  • AI Agent日志分析全攻略(专家级操作指南)
  • 2025年中国电线电缆、矿用电缆、防火电缆实力厂家Top5实力解析:从专业制造到全球视野的选择指南 - 深度智识库
  • 边缘AI模型压缩技术全景图(覆盖90%应用场景的核心方法论)
  • 三步掌握PC微信小程序wxapkg解密:从原理到实战的完整指南
  • 终极OPC-UA客户端工具完整使用指南:快速上手工业自动化数据监控
  • Win-PS2EXE:零基础将PowerShell脚本变身专业EXE的终极方案
  • 【专家亲授】MCP DP-420图Agent性能优化黄金法则:6步实现系统吞吐量翻番
  • 多源环境数据如何协同?深度剖析Agent级数据融合架构设计