记一次SpringMVC项目转Springboot项目templates和static无法访问以及WebMvcConfigurerAdapter过时失效
2021-04-07 16:25
标签:修改 一个 问题 pre div mic 推荐 访问 col 在这次项目升级过程中主要遇到了三个问题 1、使用Spring5.xx(或者Springboot2.xx)版本来配置WebMVC时,发现WebMvcConfigurerAdapter不能使用,查看源码后发现官方已经废弃了这个抽象类, 现在官方在源码中推荐的方式是直接实现WebMvcConfigurer 这个接口,通过查看这个接口的源码发现,在接口中的每个方法前都添加了“default” 在WebMvcConfigurerAdapter中的每个方法都是public的,所以官方可能为了减少代码量,直接在WebMvcConfigurer接口中使用了default 以下时在配置WebMVC的代码 除了官方推荐的这种方法外,还有第二种方法就是extends WebMvcConfigurationSupport,但是使用这种方法相当于覆盖了@EnableAutoConfiguration里的所有方法,每个方法都需要重写,比如,若不实现方法addResourceHandlers(),则会导致静态资源无法访问,因此需要特别注意。 2、templates和static无法访问,需要在WebMVC中做如下配置 templates与static的区别通过查阅springboot的相关文档就可以知道,这里不在解释 如果static中的资源还是无法访问就去查看你的templates下的html页面里面的对于static下面的静态资源的引用路径是否正确, 我的目录层次结构,以及对static下的静态资源的引用如下 记一次SpringMVC项目转Springboot项目templates和static无法访问以及WebMvcConfigurerAdapter过时失效 标签:修改 一个 问题 pre div mic 推荐 访问 col 原文地址:https://www.cnblogs.com/xing-29391/p/13387007.html 在这里说明下“default”是jdk8后的新特性,在这里简要说明下它与抽象类的区别,详细的请查阅相关资料。
default方法作用范围是public,只是有了具体实现的方法体。对已有的接口,如果想对接口增加一个新方法,那么需要对所有实现该接口的类进行修改。
而有了default方法,可以解决该问题,但是需要注意的是public抽象类的abstract method还可以可以是protected,因此在一些方面并不能完全取代抽象类。
@Configuration
// 等价于
/**
* 静态资源配置
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/resources/");
registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/templates/"); //如果有templates就解析成类路径下的templates
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); //如果有static就解析成类路径下的static
// 如果有upload就解析成外部的路径file:/home/o2o/image/upload
registry.addResourceHandler("upload/**").addResourceLocations("file:/home/o2o/image/upload");
}
上一篇:js--数组方法
下一篇:python 高并发解决方案
文章标题:记一次SpringMVC项目转Springboot项目templates和static无法访问以及WebMvcConfigurerAdapter过时失效
文章链接:http://soscw.com/index.php/essay/72462.html