Как прочитать переменную или объединить одно свойство в аннотации @Value весенней загрузки - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть один класс POJO, который читает весенние свойства из файла application.yaml.Здесь мне нужно установить значение по умолчанию для groupId (чтобы получить, когда не указан) на основе комбинации значения темы и другой строки.

private String topic;

 @Value("${topic}_test")
 private String groupId;

Я пробовал это, но получаю ошибку как

Не удалось определить местозаполнитель 'topic' в значении "$ {topic} _test

Я создал переменную и попытался получить к ней доступ в @Value, но не смог. Пожалуйста, предоставьте любые предложения для доступа к этому

1 Ответ

0 голосов
/ 27 февраля 2019

Значение по умолчанию

Допустим, у вас есть свойство, подобное этому, в вашем файле application.yml

topic: myFavoriteTopic

Приведенный ниже код назначит значение "myFavoriteTopic" переменной groupId, еслиSpring может загрузить свойство ключом topic из application.yml.Если это не так, ему будет присвоено значение по умолчанию «Моя тема по умолчанию».

@Value("${topic:my default topic}")
private String groupId;

Чтобы установить null в качестве значения по умолчанию, используйте:

@Value("${topic:#{null}}")

Чтобы использовать пустую строку в качестве значения по умолчанию, используйте:

@Value("${topic:}")

Получить имя ключа из переменной

В вашем фрагменте кода у вас есть переменная String topic.Для среды Spring эта переменная не используется в поиске значения свойства.Когда вы делаете @Value("${topic}"), «topic» - это имя ключа, который Spring будет искать в application.yml.Имя ключа не может быть определено во время выполнения на основе значения переменной Java.Причина в том, что свойства могут быть загружены до выполнения кода класса.

_test суффикс

Также в своем фрагменте кода вы используете @Value("${topic}_test").В этом случае Spring делает конкатенацию «_test» к значению, полученному для темы ключа свойства.В моем первом примере groupId будет присвоен "myFavoriteTopic_test".

...