Предотвратить сбой во время выполнения для пустого @Value - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь загрузить хранилище ключей и проверить срок действия.Допустим, у меня есть два значения

@Value(“${connections.keystoreA}”)
private String keystoreA;

@Value(“${connections.keystoreB}”)
private String keystoreB;

В некоторых средах есть одно из этих значений, в некоторых - оба.У меня вопрос, есть ли способ предотвратить сбой этого во время выполнения, если нет одного из значений, кроме использования значения по умолчанию?

Редактировать: я также хотел бы сделать так, чтобыЯ могу добавить дополнительные конфиги в будущем, keystoreC, keystoreD и т. Д.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Поскольку вы не хотите использовать значения по умолчанию и не хотите иметь Exception во время выполнения, вы должны использовать org.springframework.core.env.Environment bean.

Просто @Autowire Среда в вашемкомпонента и используйте метод getProperty для получения свойства из конфигурации yml.

Например, если вы хотите получить значение для my.connections.keystoreA, вы будете использовать:

String value = environment.getProperty("my.connections.keystoreA");

Теперь, если в вашем файле yml есть значение для этого ключа, это значение будет сохранено в переменной value.Если для этого ключа нет значения, тогда значение переменной value будет равно нулю.

0 голосов
/ 25 июня 2018

Вы можете сделать if / else в вашем application.properties и установить значение по умолчанию.Например, ваш application.properties может выглядеть следующим образом:

my.connections.keystoreA=${connections.keystoreA:defaultA}
my.connections.keystoreB=${connections.keystoreB:defaultB}

Идея такова: если connections.keystoreA не существует, будет введена строка defaultA.

После этогоВы можете ввести значения:

@Value("${my.connections.keystoreA}") 
private String keystoreA;    
@Value("${my.connections.keystoreB}") 
private String keystoreB;

При этом пружина не выйдет из строя во время выполнения.

Другой вариант - использовать это if / else непосредственно в полях, чтобы установить значение по умолчаниюпри необходимости:

@Value("${connections.keystoreA:defaultA}") 
private String keystoreA;    
@Value("${connections.keystoreB:defaultB}") 
private String keystoreB;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...