Spring Cloud Vault использует локальную переменную env, когда не используется для ключа API

Я использую Spring Cloud Vault для хранения ключа API в производстве.

Из чтения блог spring.io кажется, что я могу использовать

 @Value("${apiKey}")
 String apiKey;

чтобы получить доступ к этому ключу в хранилище.

Это нормально в производстве, но есть ли способ установить значение по умолчанию/какой-то другой способ настройки apiKey, который можно использовать локально для разработки? (желательно за пределами хранилища, если это возможно)

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

M. Deinum 11.03.2019 15:07

Спасибо! Оглядываясь назад, это кажется очевидным, к сожалению, у меня просто был блок разума. Если вы опубликуете это как ответ, я приму это

Sophia Price 11.03.2019 15:10
0
2
462
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете установить значение по умолчанию (если apiKey не найден) следующим образом:

@Value("${apiKey:MY_KEY_HERE}")

где MY_KEY_HERE — значение по умолчанию.

В дополнение к этому сохраните свой ключ локально при нажатии клавиши и передайте его как переменную среды или аргументы, такие как -Djavax.net.ssl.trustStore=C://..//key-store.jks

Mebin Joe 11.03.2019 13:30
Ответ принят как подходящий

Как поясняется в Справочное руководство по загрузке Spring, используются несколько источников свойств конфигурации. На самом деле не имеет значения, откуда берется значение для apiKey.

У вас есть как минимум 3 варианта:

  1. Установите его в среде,
  2. Передайте его в качестве аргумента с помощью --apiKey=<your-api-key> при локальном запуске приложения.
  3. просто поместите его в application.[properties|yaml], используемый для локальной разработки.

В любом случае свойство apiKey будет разрешено локально без использования хранилища.

Другие вопросы по теме