项目开发中需要做下载功能,但是后台静态资源访问不到。搞了一天才解决的。记录下来,希望大家不要入坑。

项目环境:idea + jdk11 + gradle

按照约定大于配置的原则,springboot resource文件下的静态资源,在不需任何配置的情况下都可以访问到的。 测试发现报404.觉着可能是环境差异。遂配置spring.mvc.static-path-pattern 属性,配置后进行测试,还是报404. 改成用java Bean的方式配置,还是404.

彻底蒙圈。因为是第一次使用gradle管理依赖,觉着是gradle配置的问题导致的。就创建了一个maven项目进行测试。发现静态资源可以访问,更加确定是gradle配置的问题。就在这搞了一天,毫无进展😂。 放弃、睡觉。

第二天在看项目代码。 突然发现 项目中已经实现了WebMvcConfigurationSupport接口但是没有重写addResourceHandlers方法。

突然想起了起了看过的一篇文章 WebMvcAutoConfiguration 这个注解中有一个特殊的条件。当 WebMvcConfigurationSupport 没有加载时才生效。按照上图的配置肯定就访问不到了。

遂重写 addResourceHandlers 方法 

 测试  访问成功。

折腾了一天写点总结: 当定位问题的方向出错,折腾再长的时间也是白搭。 对springboot的自动配置了解不够,定位靠猜。正确的方法应该是从源码入手。 后面复盘一下这个问题尝试从源码入手定位解决。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐