SpringBoot项目配置拦截器无效解决方案

最近项目换了新框架,改用SpringBoot了,虽然好用但有些东西还是很令人抓狂的。
在与前端对接的过程中出现了跨域的问题,首先想到的就是用拦截器去全局处理。但我的拦截器怎么配置都没有生效。以下是我的拦截器代码。

直接实现HandlerInterceptor接口

public class AccessInterceptor implements HandlerInterceptor {


    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("P3P", "CP=CAO PSA OUR");
        if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
            response.addHeader("Access-Control-Allow-Methods", "POST,GET,TRACE,OPTIONS");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type,Origin,Accept");
            response.addHeader("Access-Control-Max-Age", "1000");
        }
        System.out.println("全局拦截器");
        return true;
    }
}

编写配置类将拦截器加进去 ,这里要加@Configuration,不然扫不进去

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new AccessInterceptor())
                .addPathPatterns("/**");

    }
}

配到这里基本上已经完成了,我当时也是这么想的,能用了。结果还是不行。
经过我在网上反复查阅,发现要在启动类上加@ComponentScan注解

@MapperScan(basePackages = "com.cn.lejiao.mapper")
@ComponentScan(basePackages = {"com.cn.lejiao.interceptor"})
@SpringBootApplication(scanBasePackages = "com.cn.lejiao", exclude = DataSourceAutoConfiguration.class)
public class MhjServerSettleApp {
    public static void main(String[] args) {
        SpringApplication.run(MhjServerSettleApp.class, args);
    }
}

到这里拦截器已经生效了,一测试发现接口访问不到了,404错误。我就很纳闷怎么问题一个接一个。后面又经过多方查找发现我这个@ComponentScan注解有问题。

@ComponentScan(basePackages = {"com.cn.lejiao.interceptor"})

我这里只把拦截器所在的包扫进去,controller , service 都没扫进去,稍加改动

@ComponentScan(basePackages = {"com.cn.lejiao"})

OK ,完工!
虽然只是小问题,我也写篇博客记录记录吧,希望遇到同样问题的同道看到这篇博客能快速解决。

猜你喜欢

转载自blog.csdn.net/qq_37014149/article/details/90412572