1. Обзор
Иногда нам приходится обслуживать статический контент в наших веб-приложениях. Это может быть изображение, HTML, CSS или файл JavaScript.
В этом уроке мы покажем, как обслуживать статический контент с помощью Spring Web Flux . Мы также предполагаем, что наше веб-приложение будет настроено с помощью Spring Boot .
2. Переопределение конфигурации по умолчанию
По умолчанию Spring Boot обслуживает статический контент из следующих местоположений:
- /общественность
- /статический
- /ресурсы
- /META-INF/ресурсы
Все файлы из этих путей обслуживаются по пути /[имя файла ресурса] .
Если мы хотим изменить путь по умолчанию для Spring Web Flux, нам нужно добавить это свойство в наш файл application.properties :
spring.webflux.static-path-pattern=/assets/**
Теперь статические ресурсы будут расположены в /assets/[resource-file-name] .
Пожалуйста, обратите внимание, что это не будет работать, когда присутствует аннотация @EnableWebFlux .
3. Пример маршрутизации
Также можно обслуживать статический контент с помощью механизма маршрутизации веб-потока.
Давайте рассмотрим пример определения маршрутизации для обслуживания index.html файл:
@Bean public RouterFunctionhtmlRouter( @Value("classpath:/public/index.html") Resource html) { return route(GET("/"), request -> ok().contentType(MediaType.TEXT_HTML).syncBody(html) ); }
Мы также можем обслуживать статический контент из пользовательских местоположений с помощью функции Маршрутизатора .
Давайте посмотрим, как обслуживать изображения из каталога src/main/resources/img , используя путь /img/** :
@Bean public RouterFunctionimgRouter() { return RouterFunctions .resources("/img/**", new ClassPathResource("img/")); }
4. Пример пути к Пользовательским веб-ресурсам
Другим способом обслуживания статических ресурсов, хранящихся в пользовательских расположениях, вместо пути по умолчанию src/main/resources , является использование плагина maven-resources-plugin и дополнительного свойства Spring WebFlux.
Во-первых, давайте добавим плагин в ваш pom.xml :
maven-resources-plugin 3.1.0 copy-resources validate copy-resources src/main/assets true ${basedir}/target/classes/assets
Затем нам просто нужно установить свойство статических местоположений:
spring.resources.static-locations=classpath:/assets/
После этих действий index.html будет доступно в разделе http://localhost:8080/index.html URL.
5. Заключение
В этой статье мы узнали, как обслуживать статический контент в Spring Web Flux.
Как всегда, представленный пример кода доступен на GitHub .