В 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 и убедиться, что имеются необходимые конфигурации для успешного получения списка строк.