Spring boot2.0遇到的问题
在观看网课时,我按照老师所给的代码及步骤编写,但是idea总是给我标红,而且找来找去找不到问题的所在,最终发现是spring boot版本的问题,我使用的是2.0.4版本,而老师的是1.5的版本,想换个版本,但是我使用的是java10,旧版本也出错,最终只可以使用新版本,网上找资料,查问题。
推荐博客:
1)嘟嘟独立博客
2)纯洁的微笑博客
遇到的问题:
(1)WebMvcConfigurerAdapter提示过时
Springboot2.0将原本的手动配置springMVC的类WebMvcConfigurerAdapter取消了,取而代之的是接口WebMvcConfigurer
旧:
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter
新:
public class MyWebMvcConfigurerAdapter implements WebMvcConfigurer
(2)静态资源被拦截
出现原因:1.5版本时候META-INF/resources / resources / static / public 都是spring boot 认为静态资源应该放置的位置,会自动去寻找静态资源,而在spring boot 2.0则对静态资源也进行了拦截,当拦截器拦截到请求之后,但controller里并没有对应的请求时,该请求会被当成是对静态资源的请求。此时的handler就是 ResourceHttpRequestHandler,就会抛出上述错误。
解决方法:在编写拦截器的时候记得将路径”/static/**”排除在外即可。可以看博客解决。
实现:在配置SpringMVC中使用接口WebMvcConfigurer中添加两个方法:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/index.html","/","/user/login","/static/**");
}
和
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
#未完待续,以后遇到会继续spring2.0的问题会继续更新