【Java】springboot是在哪里完成对SpringMvc中的Servlet和Filter配置的?
找不到对于web项目的配置点,版本是2.0.5.RELEASE
回答
Spring Boot 为 Spring MVC 提供的自动配置主要包括视图解析器、静态资源处理、类型转化器与格式化器、HTTP 消息转换器、静态主页的支持等。这些配置信息都是在 WebMvcAutoConfiguration
配置类中完成的,具体方法如下。
当然用户还可以扩展其他功能组件,比如拦截器、格式化器、视图控制器等。 Spring Boot 2.0 以前使用 WebMvcConfigurerAdapter
来扩展 Spring MVC 组件,它是一个适配器,实现自 WebMvcConfigurer
接口,里面的方法全部是空方法。目的就是让我们继承这个类,重写里面的方法来扩展功能。
在 Spring Boot 2.0 之后 WebMvcConfigurerAdapter
就已经过时了,并且 WebMvcConfigurer
接口也发生了变化,里面所有的方法都定义成了默认方法(default
)。因此我们可以直接实现 WebMvcConfigurer
接口,重写对应的方法即可。接口中的默认方法是 jdk1.8 才支持的,要注意这一点,具体方法如下。
下面是一个基于 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
,配置自定义拦截器
@Configurationpublic 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