IDEA项目搭建十一——添加拦截器及启动事件
Posted taiyonghai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA项目搭建十一——添加拦截器及启动事件相关的知识,希望对你有一定的参考价值。
程序启动时如果需要添加某些初始化代码可以使用以下事件处理
import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * 程序初始化事件 */ @Component public class ApplicationEventListener implements ApplicationListener { @Override public void onApplicationEvent(ApplicationEvent event) { // if (event instanceof ApplicationEnvironmentPreparedEvent) { // // 初始化环境变量 // }else if(event instanceof ApplicationPreparedEvent){ // // 初始化完成 // }else if (event instanceof ContextRefreshedEvent) { // // 应用刷新 // }else if (event instanceof ApplicationReadyEvent) { // // 应用已启动完成 // }else if (event instanceof ContextStartedEvent) { // // 应用启动,需要在代码动态添加监听器才可捕获 // }else if (event instanceof ContextStoppedEvent) { // // 应用停止 // }else if (event instanceof ContextClosedEvent) { // // 应用关闭 // }else {} } }
过滤用户登录状态验证时普遍使用拦截器或过滤器spring boot 2.0使用以下方式
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 请求拦截器 * 参考资料:https://www.cnblogs.com/holly8/p/6178828.html * 普遍继承HandlerInterceptorAdapter抽象类,其中多提供了一个异步拦截方法afterConcurrentHandlingStarted(),我们用不到所以直接实现基础接口 * 调用顺序:preHandler(可多个) -> Controller -> postHandler(可多个) -> model渲染-> afterCompletion(可多个) */ public class RequestInterceptor implements HandlerInterceptor { /** * Action执行前调用 * @return */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { System.out.println("调用拦截器"); return true;//此处必须返回true使该请求继续向下执行,false则中断请求 } /** * Action执行后,View渲染前调用 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { } /** * View渲染后调用,整个流程执行结束调用 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { } }
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 配置类 * WebMvcConfigurerAdapter已被废弃,官方推荐改用WebMvcConfigurer */ @Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //将拦截器注入进程序,可同时注入多个拦截器 registry.addInterceptor(new RequestInterceptor()).addPathPatterns("/**"); } }
以上是关于IDEA项目搭建十一——添加拦截器及启动事件的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot+Vue前后端分离项目的搭建及简单开发(这次保证看明白~)