Springboot 拦截器的配置

在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 中的内容是需要放行的路径

posted @ 2020-07-15 20:59  绿色的草  阅读(747)  评论(0编辑  收藏  举报