Springboot 拦截器的配置
2024-10-20 16:34:30
在Springboot项目中添加拦截器,分两步:
1:创建一个拦截器类
2:配置拦截器
以上步骤完成就可以使用了,下面来添加拦截器:
1:创建一个拦截器类 MyInteceptor 继承 HandlerInterceptor 接口,然后实现它的几个方法,如下:
package com.yyy.config; import com.yyy.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* @auther YueYangyang
* @date 2020/6/25 21:28
*/
@Slf4j
public class MyInteceptor implements HandlerInterceptor {
@Autowired
private RedisTemplate redisTemplate; @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.debug("这是MyInteceptor的preHandle方法。");
return true;
} @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
log.debug("这是MyInteceptor的postHandle方法。");
} @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
log.debug("这是MyInteceptor的afterCompletion方法。");
}
}
以上三个重写方法中 preHandle 方法就是拦截的时候,会进的方法,此时就写一个拦截器是不行的,那么什么时候拦截呢,那就要再写一个配置类,告诉拦截器什么时候拦截、什么时候不拦截
2:配置拦截器 我们建一个配置类 MvcConfig 继承 WebMvcConfigurer接口,先将我们上一步写的拦截器注入到 bean 中,然后重写它的 addInterceptors 方法,代码如下:
package com.yyy.config; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /**
* @auther YueYangyang
* @date 2020/6/25 21:30
*/
@Configuration
public class MvcConfig implements WebMvcConfigurer {
//注入bean
@Bean
public MyInteceptor myInteceptor(){
return new MyInteceptor();
} //重写拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//excludePathPatterns 是放行
//addPathPatterns
registry.addInterceptor(myInteceptor()).addPathPatterns("/user/**","/main/**").excludePathPatterns("/login/**","/user/loginIn");
} }
此处要注意的是 注入bean 的方法名 要与重写方法中的标红位置名一致。
到这里 我们就已经写好了拦截器了,其中配置类中 addPathPatterns 中的内容是,需要拦截的方法路径,excludePathPatterns 中的内容是需要放行的路径
最新文章
- javaSE基础04
- 2013 duilib入门简明教程 -- XML基础类(7)
- CSS盒子模型的一些理解
- UIScrollView增加刷新
- linux 学习之路
- Exception-异常
- Spring 4.3.2下实现http多次断点下载
- ab压测参数说明
- http://www.itpub.net/thread-1778530-1-1.html
- android 56
- jQuery慢慢啃之事件(七)
- HDOJ 2802 F(N)
- [Android] Volley源代码分析(五岁以下儿童)Q \\ u0026一个
- 闭包&;装饰器详解
- 大数据系列之Hadoop分布式集群部署
- C# 各种常用集合类型的线程安全版本
- Can you solve this equation?
- 微信支付之02------整个微信支付功能----------Java实现
- Python中的numpy模块解析
- 工具类:Colletions ,Arrays(静态导入,可变参数,强循环)