Ответ 1
Попробуйте это
RouterFunction router = resources("/**", new ClassPathResource("public/"));
Я изучаю WebFlux, и я хотел бы знать, как обслуживать статический контент на MicroService с помощью WebFlux, но я не нашел информации, чтобы сделать это.
Попробуйте это
RouterFunction router = resources("/**", new ClassPathResource("public/"));
Хуан Медина прав. Я просто хочу сделать это еще более понятным и предоставить ссылку.
Фактически вам просто нужно добавить компонент RouterFunction для обработки статических ресурсов. Вам не нужно реализовывать свою собственную функцию RouterFunction, поскольку RouterFunctions.resources("/**", new ClassPathResource("static/"));
дает то, что вы хотите.
Все, что я делаю, это добавляю этот кусок кода:
@Bean
RouterFunction<ServerResponse> staticResourceRouter(){
return RouterFunctions.resources("/**", new ClassPathResource("static/"));
}
Все нераспознанные запросы попадут в статический маршрутизатор.
Поместите общедоступные статические веб-ресурсы в папку 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>
Спасибо wildloop для меня со следующими свойствами:
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