从1.5.9升级至2.0.2之后,发现在yml文件里配置静态资源不能生效了,原因可以参看https://my.oschina.net/dengfuwei/blog/1795346,但是没能解决我的问题,下面给出我的解决方法:
首先,修改下appcation.yml里的配置:
#文件上传路径 web: upload-path: c:/upload/pitiao/admin/ spring: mvc: throw-exception-if-no-handler-found: true static-path-pattern: /** resources: static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/assets/,classpath:/public/,file:${web.upload-path}
注意:classpath:/assets/和file:${web.upload-path},一个是我的静态文件根目录,一个是文件上传根目录
其次,我们需要实现
WebAppConfigurer
这个类,并重写
addResourceHandlers
这个方法。
这个类的代码即为如下所示:
@Configuration public class WebAppConfigurer implements WebMvcConfigurer { @Value("${web.upload-path}") private String baseUploadPath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //registry.addResourceHandler("/templates/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/templates/"); registry.addResourceHandler("/assets/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/assets/"); registry.addResourceHandler("/upload/**").addResourceLocations("file:"+ baseUploadPath); } }
这时再打开我们的页面:
静态资源没问题了,再访问下上传的文件:
搞定。