Регистрация папки статических ресурсов в Spring Boot: несколько методов, объясненных примерами кода

В приложении Spring Boot обслуживание статических ресурсов, таких как CSS, JavaScript, изображения и другие файлы, имеет решающее значение для создания современных веб-приложений. По умолчанию Spring Boot обслуживает статические ресурсы из пути к классам или «статического» каталога внутри проекта. Однако для особых требований вам может потребоваться зарегистрировать дополнительные папки статических ресурсов. В этой статье мы рассмотрим несколько способов регистрации папки статических ресурсов в Spring Boot, а также приведем примеры кода.

Метод 1. Использование метода «addResourceHandlers».
Один из способов зарегистрировать папку статических ресурсов в Spring Boot — использовать метод addResourceHandlersинтерфейса WebMvcConfigurer.. Вот пример:

@Configuration
public class StaticAssetsConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/custom/")
                .addResourceLocations("file:/path/to/custom/assets/");
    }
}

В этом примере метод addResourceHandlersпереопределяется для добавления нового обработчика ресурсов для шаблона URL-адреса «/custom/». Он указывает расположение папки статических ресурсов с помощью метода addResourceLocations.

Метод 2: использование свойства «spring.resources.static-locations».
Другой подход — настроить папку статических ресурсов с помощью свойства spring.resources.static-locationsв файле application.properties или application.yml. файл. Вот пример:

spring.resources.static-locations=file:/path/to/custom/assets/

В этом примере для свойства задан путь к папке настраиваемых статических ресурсов.

Метод 3: использование свойства «spring.resources.add-mappings».
Spring Boot также предоставляет свойство spring.resources.add-mappingsдля регистрации дополнительных сопоставлений ресурсов. Вот пример:

spring.resources.add-mappings=/custom/

В этом примере шаблон URL-адреса «/custom/» добавляется в качестве сопоставления, и Spring Boot будет искать статические ресурсы в «статической» папке по умолчанию, а также в дополнительной пользовательской папке.

Метод 4: использование компонента ResourceHttpRequestHandler
Вы можете создать собственный компонент типа ResourceHttpRequestHandlerдля обработки статических запросов ресурсов. Вот пример:

@Configuration
public class StaticAssetsConfig {
    @Bean
    public ResourceHttpRequestHandler staticAssetsHandler() {
        ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();
        handler.setLocations(Arrays.asList(
                new ClassPathResource("static/"),
                new FileSystemResource("/path/to/custom/assets/")
        ));
        return handler;
    }
}

В этом примере bean-компонент staticAssetsHandlerсоздается с несколькими местоположениями ресурсов, включая «статическую» папку по умолчанию и папку настраиваемых ресурсов.

В этой статье мы рассмотрели несколько способов регистрации папки статических ресурсов в Spring Boot. Мы обсудили использование метода addResourceHandlers, свойства spring.resources.static-locations, свойства spring.resources.add-mappingsи создание пользовательского bean-компонента ResourceHttpRequestHandler. В зависимости от ваших конкретных требований вы можете выбрать наиболее подходящий метод для обслуживания статических ресурсов в вашем приложении Spring Boot.