Рубрики
Без рубрики

Статический контент в весеннем веб-потоке

Узнайте, как обслуживать статический контент в наших веб-приложениях с помощью Spring Web Flux.

Автор оригинала: baeldung.

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 RouterFunction htmlRouter(
  @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 RouterFunction imgRouter() {
    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 .