Изучение различных методов получения списка строк с использованием аннотации @Value в Spring

В Spring аннотация @Value обычно используется для внедрения значений из файлов свойств или переменных среды в bean-компоненты Spring. Хотя он часто используется для получения отдельных значений, его также можно использовать для получения списка строк. В этой статье мы рассмотрим различные методы получения списка строк с помощью аннотации @Value в Spring, попутно предоставляя примеры кода.

Метод 1: значения, разделенные запятыми
Один из способов определить список строк с помощью аннотации @Value — указать значения в виде строки, разделенной запятыми, в файле свойств. Вот пример:

@Configuration
@PropertySource("classpath:application.properties")
public class MyConfig {

    @Value("${my.string.list}")
    private List<String> stringList;

    // ...
}

application.properties:

my.string.list=apple,banana,orange

В этом примере свойство my.string.listпредставляет собой строку, разделенную запятыми, которую Spring автоматически преобразует в список строк.

Метод 2: список YAML
Если вы предпочитаете использовать конфигурацию YAML, вы можете определить список строк следующим образом:

@Configuration
@PropertySource("classpath:application.yml")
public class MyConfig {

    @Value("${my.string.list}")
    private List<String> stringList;

    // ...
}

application.yml:

my:
  string:
    list:
      - apple
      - banana
      - orange

Здесь свойство my.string.listопределяется как список YAML, который Spring сопоставляет со списком строк.

Метод 3: выражение SpEL
Другой подход — использовать язык выражений Spring (SpEL) в аннотации @Value для непосредственного создания списка строк:

@Configuration
public class MyConfig {

    @Value("#{'${my.string.list}'.split(',')}")
    private List<String> stringList;

    // ...
}

В этом примере выражение SpEL #{'${my.string.list}'.split(',')}разбивает строку, разделенную запятыми, на массив и преобразует ее в список строк.

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

@Configuration
public class MyConfig {

    @Value("${my.string.list}")
    @org.springframework.boot.convert.ApplicationConversionService
    private List<String> stringList;

    // ...
}

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

В этой статье мы рассмотрели несколько методов получения списка строк с помощью аннотации @Value в Spring. Мы рассмотрели такие методы, как использование значений, разделенных запятыми, списков YAML, языка выражений Spring (SpEL) и пользовательских преобразователей. В зависимости от ваших предпочтений и требований вы можете выбрать подход, который лучше всего соответствует вашим потребностям.

Не забудьте правильно определить свои свойства или файлы YAML и убедиться, что имеются необходимые конфигурации для успешного получения списка строк.