springboot直接访问静态资源失效

最近尝试在一个springboot项目中直接访问静态资源时,如

http://localhost:8080/3.png

发现报了404错误,感觉很奇怪,在记忆中,只要把静态资源直接放到/static,/public,/resources,/templates下时,就可以象上面一样直接进行访问。
我尝试新建了一个项目,什么东西都不修改,只是简单地添加了spring-boot-starter-web模块,然后直接访问,发现成功了,那就是说我的记忆没啥大问题,我前一个项目肯定是修改了什么东西。

一开始我怀疑是jar包的问题,检查了很久,相关jar包删了加,加了删,问题没有解决,然后我想是不是过滤器的问题,把所有自定义的过滤器都去掉了,但还是老样子。

最后,因为WebMvcAutoConfiguration是SpringMVC的自动配置类,所以对其进行检查,发现WebMvcConfiguration中

@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
意思是该配置在不存在WebMvcConfigurationSupport 类时生效

所以,静态资源访问失效的原因就是我在前一个项目中继承了WebMvcConfigurationSupport,导致了springboot中原本的静态资源映射失效了,所以,如果要解决这个问题,一是不再继承该类,这当然不太可能,二就是手动添加静态资源映射路径:

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/")
        .addResourceLocations("classpath:/public/")
        .addResourceLocations("classpath:/resources/")
        .addResourceLocations("classpath:/templates/");
        super.addResourceHandlers(registry);
    }

这样,问题就解决了。
最后提一下,templates这个文件夹通常用于放置通过controller来进行跳转的页面,需要模块spring-boot-starter-thymeleaf的支持。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值