SpringBoot 中配置拦截器 WebMvcConfigurerAdapter 方法过时带来的新问题

最近在写一个商品秒杀的小demo,用的是springBoot2.0.2在进行拦截器配置的时候用的是WebMvcConfigurerAdapter,继承springBoot默认提供的WebMvcConfigurerAdapter类,但是在idea上提示方法已过时,于是通过查找资料用新的方法WebMvcConfigurationSupport代替,这样idea不提示过时了。



   但是这样会引来新的问题,springBoot启动后不加载静态资源了,这种方式会屏蔽Spring Boot的@EnableAutoConfiguration中的设置。这时候启动项目时会发现映射根本没有成功。




于是想到自己来写映射,重写addResourceHandlers方法


    

package com.springboot.buying.snapup.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.*;

import java.util.List;

/**
 * @Author: nanjunyu
 * @Description:统一拦截器
 * @Date: Create in  2018/6/21 16:31
 */
@Configuration
public class WebConfig  extends WebMvcConfigurationSupport {

    @Autowired
    UserCookieCheck userCookieCheck;

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(userCookieCheck);
    }



    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/resources/static/");
    }


}

 但是启动之后还是一样的结果,还是找不到静态资源,于是自己找到了官方文档,发下如下

Deprecated. 
as of 5.0 WebMvcConfigurer has default methods (made possible by a Java 8 baseline) and can be implemented directly without the need for this adapter 

An implementation of WebMvcConfigurer with empty methods allowing subclasses to override only the methods they’re interested in. 


所以这种方式也不推荐,官方推荐另一种处理方式,直接实现WebMvcConfigurer接口,解决问题


package com.springboot.buying.snapup.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.*;

import java.util.List;

/**
 * @Author: nanjunyu
 * @Description:统一拦截器
 * @Date: Create in  2018/6/21 16:31
 */
@Configuration
public class WebConfig  implements WebMvcConfigurer {

    @Autowired
    UserCookieCheck userCookieCheck;

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(userCookieCheck);
    }



    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/resources/static/");
    }


}



总结解决问题也不能完全百度看别人的帖子博客,还是多看官方文档多关注官网直接,因为可能别人的回答也过时了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Spring Boot配置拦截可以通过以下几个步骤: 1. 创建一个拦截类:首先,创建一个类实现`HandlerInterceptor`接口,该接口定义了拦截方法,例如`preHandle`、`postHandle`和`afterCompletion`。在这些方法,你可以编写你自己的逻辑来处理请求和响应。 ```java public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行拦截处理 return true; // 返回true表示继续处理请求,返回false将终止请求 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后,渲染视图之前执行的操作 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 请求处理完成后执行的操作,可用于资源清理等 } } ``` 2. 注册拦截:在Spring Boot,可以通过配置类来注册拦截。创建一个配置类,并实现`WebMvcConfigurer`接口,重写`addInterceptors`方法,在该方法添加拦截。 ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); // 添加拦截并指定拦截路径 } } ``` 3. 配置拦截路径:在上述代码,使用`addPathPatterns`方法来指定拦截路径。可以使用Ant风格的路径模式,例如`/**`表示拦截所有请求,也可以指定具体的路径,如`/api/*`表示只拦截以`/api/`开头的请求。 通过以上步骤,你就成功配置了一个拦截。当请求匹配到拦截路径时,拦截的相关方法将会被调用,你可以在这些方法编写你的业务逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值