Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Считывание списка из .properties файла через @Value в Spring

Быстрый ответ

Если вам необходимо загрузить список из файла свойств в бин Spring'а, просто составьте список значений, отделив их друг от друга запятой. Затем используйте аннотацию @Value, вместе со SpEL, для загрузки списка:

properties
Скопировать код
# application.properties
listItems=Item1,Item2,Item3
Java
Скопировать код
// Бин Spring'a
@Component
public class Config {
    @Value("#{'${listItems}'.split(',')}")
    private List<String> values; // Вот и все! Из строки мы получили список 
}

Таким образом, аннотация @Value в сочетании с SpEL превращают строку с разделителями в практичный Java-список.

Кинга Идем в IT: пошаговый план для смены профессии

Основы загрузки списков

Представленный выше пример демонстрирует удобство работы с аннотацией @Value и SpEL. Метод .split(',') позволяет превращать строку в массив, который затем конвертируется в List<String>, под капотом у Spring.

Загрузка файла свойств это только начало работы. Файл обычно находится в каталоге src/main/resources проекта Maven или Gradle. Используя аннотацию @PropertySource, не забудьте указать путь и имя файла правильно.

Улучшение конфигурации с помощью ConversionService

ConversionService является мощным инструментом в Spring. После его регистрации в контексте Spring у вас будет полный контроль над процессом конвертации, включая обработку пробелов и кастомных разделителей.

Java
Скопировать код
@Bean
public ConversionService conversionService() {
  ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
  bean.afterPropertiesSet(); // Готово к использованию!
  return bean.getObject();
}

Применение @ConfigurationProperties

Аннотация @ConfigurationProperties предлагает строгую типизацию для загрузки конфигурационных свойств прямо в объект, став просто незаменимым инструментом в Spring Boot.

Java
Скопировать код
@Component
@ConfigurationProperties(prefix = "email")
public class EmailProperties {
    private List<String> admins; // Готовы управлять списком email-администраторов!
    // геттеры и сеттеры
}

Визуализация

возьмем пример со списком свойств:

md
Скопировать код
Файл свойств: nuts=almond,pecan,walnut

Spring формирует список:
Java
Скопировать код
@Value("#{'${nuts}'.split(',')}")
private List<String> nutsList; // Время поиграть с орехами!

В результате получаем:

md
Скопировать код
Корзина орехов: [алмонд, пекан, грецкий орех] // Великолепно!

Вкратце, запятые в файле свойств разделяют элементы, @Value формирует nutsList, и вуаля, наш код готов к раздаче орешков!

Раскрываем возможности с помощью Autowiring

Использование @Autowired в связке с @Component и @ConfigurationProperties облегчает интеграцию свойств с бинами.

Автонастройка Spring Boot

Если вы используете Spring Boot, добавьте конфигурацию в файл META-INF/spring.factories и Spring Boot автоматически подтянет все компоненты, просто как по мановению волшебной палочки!

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Когда свойства не доступны

Если свойства остаются неизвестными для приложения, убедитесь в следующем:

  • Проверьте аннотацию @PropertySource. Путь должен быть указан правильно.
  • application.properties или application.yml должны быть на своем месте.
  • Ключ, указанный в @Value, должен строго соответствовать ключу в файле свойств.

Полезные материалы

  1. Value (Spring Framework 6.1.3 API)
  2. Основные возможности
  3. Spring из Окопов: Внедрение Значений Свойств в Конфигурационные Бины – Петри Кайнулайнен
  4. Spring @PropertySource с использованием YAML – Stack Overflow
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой аннотацией можно загрузить список из .properties файла в Spring?
1 / 5
Свежие материалы