spingboot项目,拦截器爆红,急急急!

问题遇到的现象和发生背景

spingboot项目,拦截器这里爆红

img

正常的运行结果应是控制台下有个输出信息“拦截器进入”的,但这里拦截器没有执行到!

img

用代码块功能插入代码,请勿粘贴截图

这里是拦截器的逻辑
package com.example.portalweb.interceptor;

import ch.qos.logback.core.LogbackException;
import com.example.base.annotations.TokenCheck;
import com.example.util.JwtUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.security.auth.login.LoginException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;

public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    System.out.println("拦截器进入");

    //用户登录后会把token下发到用户端,用户端会把token存在客户端中,
    //每次请求后就不是在正文参数中带上token,而是把token放到请求头里!
    String token = request.getHeader("token");
    if (StringUtils.isBlank(token)){

// throw new LoginException("token 为空");
return false;
}

    HandlerMethod handlerMethod = (HandlerMethod) handler;
    Method method = handlerMethod.getMethod();

    if (method.isAnnotationPresent(TokenCheck.class)){
        TokenCheck annotation = method.getAnnotation(TokenCheck.class);
        if (annotation.required()){
            //校验token
            try {
                JwtUtil.parseToken(token);
                return true;
            }catch (Exception e){
                return false;
            }
        }
    }
    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}

}

这是Controller层
@PostMapping("/edit")
@TokenCheck //拦截器解析这个注解
public ResultWrapper edit(@RequestBody Userbackgroundtable userbackgroundtable){
return userbackgroundtableService.edit(userbackgroundtable);
}

我的解答思路和尝试过的方法
我想要达到的结果

你把鼠标悬浮在报错的代码上,看看提示什么呢

推荐换个写法,注解加切面的去拦截

AuthInterceptor 这个类加上@Component注解
@Autowired
private AuthInterceptor authInterceptor;
registry.addInterceptor(authInterceptor).addPathPatterns("/**");