使用 webflux 从 jar 提供内容?
Serving content from jar using webflux?
我使用 Spring REST Docs 生成文档。然后我把它放在脂肪罐里。
文件在 jar 中的位置:
/BOOT-INF/classes/static/docs/index.html
如何使用 webflux 提供此类文件?
我尝试将 resources
放入 RouterFunctionDsl
:
internal class MyRoutes() {
fun router() = router {
"/foo".nest {
resources("/docs", ClassPathResource("docs/"))
}
}
}
不幸的是没有运气
您的代码示例中似乎有错字,应该是
ClassPathResource("static/docs/")
我猜您对 Spring Boot 用来提供静态位置的默认位置感到困惑。如果您查看参考文档中的 the Spring Boot common application properties 部分,您将看到 WebFlux 和 MVC 中资源位置的默认值如下:
classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
因此 /static
前缀不会自动添加,这是 Spring 引导约定。
看来我不需要添加任何resources
。开箱即用地提供静态文件(在 Spring 引导中)
我使用 Spring REST Docs 生成文档。然后我把它放在脂肪罐里。
文件在 jar 中的位置:
/BOOT-INF/classes/static/docs/index.html
如何使用 webflux 提供此类文件?
我尝试将 resources
放入 RouterFunctionDsl
:
internal class MyRoutes() {
fun router() = router {
"/foo".nest {
resources("/docs", ClassPathResource("docs/"))
}
}
}
不幸的是没有运气
您的代码示例中似乎有错字,应该是
ClassPathResource("static/docs/")
我猜您对 Spring Boot 用来提供静态位置的默认位置感到困惑。如果您查看参考文档中的 the Spring Boot common application properties 部分,您将看到 WebFlux 和 MVC 中资源位置的默认值如下:
classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
因此 /static
前缀不会自动添加,这是 Spring 引导约定。
看来我不需要添加任何resources
。开箱即用地提供静态文件(在 Spring 引导中)