使用 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 引导中)

根据文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-webflux-static-content