问题源于一个客户这边自己封装的框架,一个Spring Boot的项目在加一些自定义的配置的框架。一开始拿到框架我是崩溃的,因为这个框架还飘着错呢。而且文档一点不详细。
果然,花了几分钟把项目启动之后,发现页面的静态资源加载不进来。而且报错为
401 认证失败 复制代码
看了看代码,很明显这是框架自己定义的错误。
但是这个认证失败是什么鬼,我已经按照文档的说明把那个页面的权限打开了,而且关闭权限的时候错误是这个
410 禁止非法访问 复制代码
这就有意思了,我完全找不到这个错误信息(后来发现是单独写死在某个类里面的,那为啥要其他的错误码都定义在一起呀)
没办法只好debug看看为啥报这个错误信息。
然后发现是错误原因是
No handler mapping for xxx 复制代码
一脸懵,从未遇到过请求静态资源报这个错。我把这个框架的自定义的部分dao了个遍,完全没有地方会导致这个错误的发生。
既然没有针对这个的代码配置,那么肯定是 application.yml 有什么配置。 果然,我看到了
spring resources: add-mappings: false 复制代码
经验告诉我就是他了。把它改为true。问题解决了
所以原因就是因为这个设置成false,导致WebMvcConfigurer的addResourceHandlers方法直接返回了,所以没有Handler处理静态资源。