【Java】springboot是在哪里完成对SpringMvc中的Servlet和Filter配置的?

【Java】springboot是在哪里完成对SpringMvc中的Servlet和Filter配置的?

找不到对于web项目的配置点,版本是2.0.5.RELEASE

回答

Spring Boot 为 Spring MVC 提供的自动配置主要包括视图解析器、静态资源处理、类型转化器与格式化器、HTTP 消息转换器、静态主页的支持等。这些配置信息都是在 WebMvcAutoConfiguration 配置类中完成的,具体方法如下。

【Java】springboot是在哪里完成对SpringMvc中的Servlet和Filter配置的?

当然用户还可以扩展其他功能组件,比如拦截器、格式化器、视图控制器等。 Spring Boot 2.0 以前使用 WebMvcConfigurerAdapter 来扩展 Spring MVC 组件,它是一个适配器,实现自 WebMvcConfigurer 接口,里面的方法全部是空方法。目的就是让我们继承这个类,重写里面的方法来扩展功能。

在 Spring Boot 2.0 之后 WebMvcConfigurerAdapter 就已经过时了,并且 WebMvcConfigurer 接口也发生了变化,里面所有的方法都定义成了默认方法(default)。因此我们可以直接实现 WebMvcConfigurer 接口,重写对应的方法即可。接口中的默认方法是 jdk1.8 才支持的,要注意这一点,具体方法如下。

【Java】springboot是在哪里完成对SpringMvc中的Servlet和Filter配置的?

下面是一个基于 Spring Boot2.0 以上版本配置拦截器的 demo

自定义拦截器类 MyHandlerInterceptor

/**

* Spring Boot2.0 以上版本 HandlerInterceptor 接口中的方法全部是默认方法

* 因此这里只重写 preHandle 方法,在目标方法执行前打印一句话

*/

public class MyHandlerInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,

Object handler) throws Exception {

System.out.println("== preHandle ==");

return true;

}

}

Spring MVC 组件增强类 WebConfiguration,配置自定义拦截器

@Configuration

public class WebConfiguration implements WebMvcConfigurer {

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**");

}

}

以上是 【Java】springboot是在哪里完成对SpringMvc中的Servlet和Filter配置的? 的全部内容, 来源链接: utcz.com/a/86613.html

回到顶部