Spring boot Spring引导-提供静态内容

Spring boot Spring引导-提供静态内容,spring-boot,Spring Boot,我在配置Spring boot 1.2.0.M1以提供静态内容时遇到问题。 只要我在应用程序中添加一个@RestController组件,静态内容就不会显示,而是会出现白标签错误页面。我的资源位于src/main/resources/static文件夹中 我按照上的说明进行操作,并通过将ResourceHandlerRegistry优先级设置为-1来显示它们。但我想这不是一个标准和正确的方法。REST资源的处理程序似乎优先于资源处理程序注册表。是否有可能将rest资源的处理程序配置为仅用于子上下

我在配置Spring boot 1.2.0.M1以提供静态内容时遇到问题。 只要我在应用程序中添加一个@RestController组件,静态内容就不会显示,而是会出现白标签错误页面。我的资源位于src/main/resources/static文件夹中

我按照上的说明进行操作,并通过将ResourceHandlerRegistry优先级设置为-1来显示它们。但我想这不是一个标准和正确的方法。REST资源的处理程序似乎优先于资源处理程序注册表。是否有可能将rest资源的处理程序配置为仅用于子上下文(如/api)

更新:

我已经将DispatcherServlet放在调试中,我对发生这种情况的原因有了更好的理解,但仍然不确定处理它的最佳方式是什么。 我注意到,默认情况下,以下处理程序以各自的顺序注册到Dispatch servlet中:

  • SimpleUrlHandlerMapping->favico
  • RequestMappingHandlerMapping->已注册带注释的@RestController方法
  • SimpleUrlHanderMapping->/(主页处理?)
  • BeannameulHandlerMapping
  • SimpleUrlHandlerMapping->处理在资源注册表中配置的资源
  • WebMVCConfigurationSupportHandler
  • 当我在REST资源2上执行POST时。处理它。 当我对静态资源2执行GET时。抛出HttpRequestMethodNotSupportedException,因为它找不到资源(在其handleNoMatch方法中)

    如果我使用ResourceHandlerRegistry#setOrder(Ordered.HIGHEST_priority)更改优先级;5.放在2之前。但在这种情况下,我无法执行用于REST资源的POST/user/api,因为它不匹配为资源(我已经为资源处理程序配置了一个/**模式)

    例如,如果与node.js/express相比,您为控制器配置路由,如果没有与请求匹配的路由,则请求由静态资源或模板的处理程序处理

    您知道如何通过注释使2(即RequestMappingHandlerMapping)不引发异常,而是在不匹配的情况下将请求传递给链中的下一个处理程序吗? 我希望避免使用特定的上下文(/static表示静态资源)

    更新2

    实际上,这只是我的带注释的REST控制器的一个错误配置@RestController 我在注释的value属性中配置了路径,该路径不是用于此目的,而是用于存储控制器的名称
    我忘记添加@RequestMapping,因此为任何url路径启用了处理程序RequestMappingHandlerMapping,并且get请求与任何带注释的方法都不匹配,因此它返回了一个错误

    对我有用。也许你可以分享一个完整的项目?我也有同样的错误行为,但是(具体到调试)。但是我有一个空的@RestController和一个@RequestMapping(name=“rest/bla”)。我仍然收到405个错误。我和你有什么不同?