美文网首页
springboot 2.X 解决访问静态资源的时候出现404的

springboot 2.X 解决访问静态资源的时候出现404的

作者: 进击的奥莉 | 来源:发表于2020-07-21 14:57 被阅读0次

springboot版本:2.1.15.RELEASE
jquery版本:3.5.1
今天跟着老师学习springboot引入静态资源,老师写的行云流水,但是我第一步就卡着了,静态资源访问不到,网上找资料,看源码,终于把问题解决了。
因为我不是新建springboot项目,是在我原先的基础上做的,之前为了访问图片,我新增了一个静态资源配置类,导致静态资源自动配置失效,请看我的分析。
1,在https://www.webjars.org/
网站找到jquery的maven依赖。我使用的最新版本3.5.1

<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>jquery</artifactId>
    <version>3.5.1</version>
</dependency>

maven更新完毕,你可以看到你的jquery包
在项目目录找到Externel Libraries,并打开,拉到最下面找到如图所示


webjars1.png

很多同学会和我一样,访问jquery.js会报错(你首先检查一下是不是文件夹名字写错了),比如


webjars2.png
不要急,可能你的和我问题一样,
查看源码(搜索此类WebMvcAutoConfiguration)得知,自动配置中有一个注解是@ConditionalOnMissingBean({WebMvcConfigurationSupport.class}),这个注解的意思是:在WebMvcConfigurationSupport.class这个类没有的情况下,才会走SpringBoot的Web自动配置,由于我代码中已经继承了WebMvcConfigurationSupport,所以自动配置失效了,我的代码如下:
webjars3.png

难道配置了就无解了吗?No,No,No,接下来就是我写这个文章的目的,如果还使以前的有效,只需要加上如下代码即可:
你需要多少个就添加多少个,我这里只添加两个示例。

registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/");

代码位置如图:


webjars4.png

运行代码,浏览器访问jquery.js,成功


webjars5.png
同样,static下的静态文件也可以访问
webjars6.png

如果上述方法不能解决你的问题,请看下面
之前是extends WebMvcConfigurationSupport类,我们修改为 实现WebMvcConfigurer类,既保留了所有的自动配置,也能用我们的扩展配置,真的超级智能,超级完美。推荐使用这个方法。


webjars7.png
@Configuration // 表示这是个配置类
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**").addResourceLocations("file:/D:/javaProject/upfile/");
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }
}

至此,已经完美解决,希望你能一下子搜到我的文章,节约解决问题的时间。

相关文章

网友评论

      本文标题:springboot 2.X 解决访问静态资源的时候出现404的

      本文链接:https://www.haomeiwen.com/subject/ivyikktx.html