此处对比两个spring boot版本访问静态资源的区别:(jdk分别为1.7与1.8)
1.5.9.RELEASE | 2.1.6.RELEASE | |
---|---|---|
资源未被拦截 | 可以访问 | 可以访问 |
资源被拦截 | 可以访问 | 不可以访问 |
由此可见,如果spring boot版本为2.x,那存在配置了静态资源后不能被访问的情况。所以网上会有人说配置了资源映射无效或者说原来的static下不能访问了,实际原因可能是被拦截了。spring boot2.x会拦截原来1.x默认可访问的static文件夹下的静态资源,需要自己手动配置。
参考2:spring boot 2.x静态资源会被HandlerInterceptor拦截的原因和解决方法
但是网上很多都是在class文件里配置,此处提供简单的办法,在配置文件中使用spring.resources.static-locations配置:
spring.resources.static-locations=classpath:/static/,file:E:/image/
此处替代:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/img/**").addResourceLocations("file:///" + "E:/image/" + "img/");
}
可用来访问项目目录下或本地磁盘目录下的资源文件。注意在2.x中使用,需要取消拦截。
比如:
或者