我有一个Spring Boot Web应用程序,在其中我在ControllerAdvice类中捕获了自定义异常。问题是,如果未找到处理程序,则Spring Boot在默认情况下不会引发异常(它将json发送回客户端)。

我想要的是在NoHandlerFoundException类中捕获ControllerAdvice。为了做到这一点,我明确配置

spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false

这个技巧可以完成工作,现在我可以捕获NoHandlerFoundException了,但是它禁用了Spring来自动配置静态资源的路径。因此,我的所有静态资源现在都无法用于客户端。我试图使用一种无​​济于事的配置来解决此问题
spring.resources.static-locations=classpath:/resources/static/

当用Spring Boot禁用自动配置时,有人可以建议如何在spring.resources.add-mappings=false中映射静态资源吗?

谢谢!

最佳答案

如果您的静态资源仅限于特定的URL路径,则只能配置Spring静态资源处理程序要处理的那些路径。在此示例中,/doc URL路径由类路径中/resources/static/doc/文件夹中的静态资源提供:

spring.mvc.static-path-pattern=/doc/**
spring.resources.static-locations=classpath:/resources/static/doc/

您需要删除此配置:

spring.resources.add-mappings=false

07-27 21:19