SpringBoot两个版本的差异
SpringBoot 两个版本的差异
背景:前⼏天被⼈问到了SpringBoot 使⽤的是哪个版本的?两个版本的差异?完全Hold不住,今天记起来去稍微了解下。
如今市⾯上就有SpringBoot2.X.X 和SpringBoot1.X.X 两个新旧⼤版本。其中,SpringBoot1和SpringBoot2主要区别有如下两个⽅⾯(MVC部分):
⼀、WebMvcConfigurerAdapter
WebMvcConfigurerAdapter该抽象类在新版的SpringBoot中有改动,部分⽅法过时。由于SpringBoot的2.0 及其以上版本最低已⽀持Java1.8,⽽Java1.8中有个defualt关键字的新特性,于是SpringBoot 2.0.0 对WebMvcConfigurerAdapter该抽象类的上层接⼝WebMvcConfigurer进⾏了改造,将WebMvcConfigurer中的⽅法全部改为使⽤default关键字修饰;因此,SpringBoot2版本在使⽤WebMvcConfigurerAdapter抽象类时不需要再使⽤适配器进⾏适配。
spring mvc和boot区别WebMvcConfigurer部分代码如下:
1public interface WebMvcConfigurer {
2
3/**
4    * Helps with configuring HandlerMappings path matching options such as trailing slash match,
5    * suffix registration, path matcher and path helper.
6    * Configured path matcher and path helper instances are shared for:
7    * <ul>
8    * <li>RequestMappings</li>
9    * <li>ViewControllerMappings</li>
10    * <li>ResourcesMappings</li>
11    * </ul>
12    * @since 4.0.3
13*/
14void configurePathMatch(PathMatchConfigurer configurer);
15
16/**
17    * Configure content negotiation options.
18*/
19void configureContentNegotiation(ContentNegotiationConfigurer configurer);
20
21/**
22    * Configure asynchronous request handling options.
23*/
24void configureAsyncSupport(AsyncSupportConfigurer configurer);
25
26/**
27    * Configure a handler to delegate unhandled requests by forwarding to the
28    * Servlet container's "default" servlet. A common use case for this is when
29    * the {@link DispatcherServlet} is mapped to "/" thus overriding the
30    * Servlet container's default handling of static resources.
31*/
32void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
33
34/**
35    * Add {@link Converter}s and {@link Formatter}s in addition to the ones
36    * registered by default.
37*/
38void addFormatters(FormatterRegistry registry);
更直接的说,就是WebMvcConfigurerAdapter 被WebMvcConfigurer 接⼝替代了,可以直接通过继承WebMvcConfigurer接⼝,然后实现它的defalut⽅法来使⽤WebMvcConfigurerAdapter。
除此之外,WebMvcConfigurerAdapter 还可以⽤ WebMvcConfigurationSupport 替代,只不过使⽤WebMvcConfigurationSupport这个类来替换WebMvcConfigurerAdapter时会全⾯接管对SpringMVC的配置,即SpringBoot对SpringMVC的⾃动配置全部失效,均使⽤⽤户对SpringMVC的配置。⼆、SpringMVC拦截静态资源
SpringBoot1旧版本中配置的对静态资源默认是放⾏不拦截对,⽽在SpringBoot 2.0.0及其以上版本的不会对静态资源默认放⾏,同样也会进⾏拦截。此时,就需要为使⽤到的静态资源排除排除其请求路径,这样在使⽤SpringBoot2新版本时才不会拦截静态资源。
排除拦截静态资源⽰例如下:
1 @Override
2public void addInterceptors(InterceptorRegistry registry) {
3 registry.addInterceptor(new LoginHandlerIntercepter()).addPathPatterns("/**") .excludePathPatterns("/asserts/**","/webjars/**"); }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。