私はwebfluxを学習しています。webfluxを使用してMicroServiceで静的コンテンツを提供する方法を知りたいのですが、それを行うための情報が見つかりませんでした。
これを試して
RouterFunction router = resources("/**", new ClassPathResource("public/"));
PDATE:外部からアクセスする場合は、localhost:8080/index.html
のように、URLに静的ファイルの名前を指定することを忘れないでください
フアン・メディナはその通りです。私はそれをさらに明確にして、 参照リンク を提供したいだけです。
実際、静的リソースを処理するには、RouterFunction Beanを追加するだけです。 RouterFunctions.resources("/**", new ClassPathResource("static/"));
が必要な機能を提供するため、独自のRouterFunctionを実装する必要はありません。
私がしているのは、次のコードを追加することだけです。
@Bean
RouterFunction<ServerResponse> staticResourceRouter(){
return RouterFunctions.resources("/**", new ClassPathResource("static/"));
}
認識されなかった要求は、静的ルーターに分類されます。
パブリック静的Webリソースをpublic-web-resources
フォルダ:
./src/main/public-web-resources
構成Spring Boot 2.0、 application.yaml
:
spring.main.web-application-type: "REACTIVE"
spring.webflux.static-path-pattern: "/app/**"
spring.resources.static-locations:
- "classpath:/public-web-resources/"
構成maven-resources-plugin、 pom.xml
:
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/public-web-resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<outputDirectory>${basedir}/target/classes/public-web-resources</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
</plugin>
</plugins>
</build>
ワイルドループが次のプロパティで私のために働いたおかげで:
spring.webflux.static-path-pattern: "/**"
spring.resources.static-locations: "classpath:/public-web-resources/"
Spring bootは以下のログ行を追加します:
15:51:43.776 INFO Adding welcome page: class path resource [public-web-resources/index.html] - WebMvcAutoConfiguration$WelcomePageHandlerMapping.<init>
そして、それは http:// localhost:port/myapp / のウェルカムページとして機能します
/myapp/docs
で呼び出す方法があったらいいのに
.jar
実行可能ファイルの外で静的コンテンツをホストするのに苦労しました。 Spring Boot MVCを使用すると、.jar
の横にpublic
ディレクトリを作成するだけで、ファイルが提供されます。春のwebfluxではそうではありません。ここで説明する解決策は、resources/public
フォルダーに静的ファイルを配置してから.jar
をビルドした場合にのみ機能します。
私は、次の設定でjarに含まずに静的コンテンツを提供するために春のwebfluxを取得しました:
spring:
application:
name: spring-cloud-gateway
webflux.static-path-pattern: "/**"
resources.static-locations: "file:public/"
これを使用すると、webflux jar
を構築し、展開後に静的ファイルを追加できます。