问题源于一个客户这边自己封装的框架。

一直以来,我都对这种框架无感,因为它一般是由开源项目改编的,而且不一定是改得更好了。封装越多用起来越笨重。

由于缺少文档的原因,查原因就稍微曲折了一点。

  • 首先我从出错信息开始

    1
    
    401 认证失败
    

    这就有意思了,我访问一个静态资源,而且我按照所谓的文档已经关闭权限认证了。最头疼的是,这个错误信息在这个框架的自定义的错误码里面根本没有。然后我顺着代码看了个遍,终于找到了这个错误信息。他不是用的自定义的错误码,而是直接写死的,我服了…

  • 然后debug找到原本的错误信息

    1
    
    No handler mapping for xxx
    

    醉了,这错误多明显,为啥要改成401 认证失败返回呢。

    错误虽然明显,但是确实超过了我的经验范围,静态资源需要啥Handler呢,还是我太年轻了。不过踩一次坑涨一波经验也不亏。

  • 最终,我在配置文件中发现了这个

    1
    2
    3
    
    spring:
        resources:
            add-mappings: false
    

    这不是坑爹吗,这么多配置项中掺了一个这个,还没有任何说明。

所以原因就是因为spring.resource.add-mappings这个被设置成false,导致WebMvcConfigureraddResourceHandlers方法直接返回了,所以没有Handler处理静态资源。