SpringBoot访问静态资源出现404
程序开发
2023-09-07 17:39:25
其实SpringBoot默认会自动去以下位置寻找静态资源 :
但是我们上传的图片通常不会放置在项目里面的,因为要打jar,所以图片一般放置在磁盘指定位置,因此需要告诉SpringBoot ,一般需要做如下配置
一、继承WebMvcConfigurerAdapter [已经过时]
产生诸多情况无法访问,配置麻烦,spring2.0以后不再建议使用
二、继承WebMvcConfigurationSupport [可使用]
@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {/*** 添加静态资源文件,外部可以直接访问地址** @param registry*/@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("profile/**").addResourceLocations("file:D:/upload/");super.addResourceHandlers(registry);}
}
缺点: 覆盖默认行为,造成static下的默认文件无法访问,还需添加以下代码
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
三、实现WebMvcConfigurer[官方推荐]
@Configurable
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("profile/**").addResourceLocations("file:D:/upload/");}
}
测试结果如下:
总结:
也就是说如果不覆盖默认配置SpringBoot可以很好的工作,所以再次强调推荐使用实现WebMvcConfigurer的方式
后续:
classpath 顾名思义,就是指 .class 文件所在的路径。.class 文件由 .java 文件编译后产生,我们用 java 命令执行.class 文件时,需要指定 jvm 去哪搜索目标 class 文件,总不能全盘扫描对吧,而指定去哪搜索就是 classpath 的含义,即: classpath
是JVM用到的一个环境变量,它用来指示JVM如何搜索class
。
jar包还可以包含一个特殊的/META-INF/MANIFEST.MF文件,MANIFEST.MF是纯文本,可以指定Main-Class和其它信息。JVM会自动读取这个MANIFEST.MF文件,如果存在Main-Class,我们就不必在命令行指定启动的类名,而是用更方便的命令:java -jar hello.jar
标签:
上一篇:
若依项目-调接口报错401、403
下一篇:
相关文章
-
无相关信息