我有一个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