Использование переменных окружения в файле application.yml

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Да, файл application.yml поддерживает частное использование переменных окружения в Spring Boot, их можно вызвать при помощи записи формата ${ENV_VAR}. Вот пример:

yaml
Скопировать код
server:
  port: ${PORT:8080}

В данном примере переменная ${PORT} указывает на порт сервера. Если переменная PORT определена в окружении, то её значение переопределит порт. В противном случае будет использоваться значение по умолчанию — 8080.

Можно также использовать значения переменных окружения посредством специфической нотации Spring, как это продемонстрировано в вышеуказанном примере.

Для более глубокого понимания работы плейсхолдеров можно обратиться к документации Spring Boot, где содержится всеобъемлющая информация о работе с application.yml.

Кинга Идем в IT: пошаговый план для смены профессии

Ваш помощник YAML — Переменные окружения

Оживающий огонь @Value

Аннотация @Value в Spring позволяет интегрировать переменные окружения непосредственно там, где они требуются:

Java
Скопировать код
@Value("${HOME_SWEET_HOME:/root}") // Это ваш домашний путь, если не указана переменная HOME_SWEET_HOME!
private String homeDir;

Если переменной HOME_SWEET_HOME не существует, то по умолчанию будет использоваться /root.

Приоритет аргументов командной строки

Аргументы командной строки оказываются крайне полезными для интегрирования переменных, которые могут меняться, – они могут модифицировать настройки из application.yml:

shell
Скопировать код
java -jar myWildJar.jar --server.port=${PORT} // Пора выпустить невиданное! 🔥💪

План Б: системные умолчания

Запасные значения в application.yml служат своеобразной альтернативой, когда основные настройки отсутствуют:

yaml
Скопировать код
database:
  host: ${DB_HOST:localhost} // Где сердце, там и дом (или база данных).
  port: ${DB_PORT:3306}

Если переменные DB_HOST и DB_PORT не определены, на подмогу придут значения localhost и 3306.

Помощь среды разработки

Среда разработки, такая как IntelliJ, предлагает функционал для работы с переменными окружения – это особый приоритетный доступ к окружению приложения.

Визуализация

Рассмотрим application.yml и переменные окружения как книгу рецептов и ингредиенты:

Markdown
Скопировать код
application.yml (т.е. Книга рецептов 📖):

Переменные окружения (т.е. Ингредиенты 🍎🥦🍊):
- TEMP: 'RoomTemp'
- LIGHT: 'Shade'

Результирующая конфигурация (т.е. Подав на стол блюдо 🍛):
- temperature: ${TEMP}   # RoomTemp
- light: ${LIGHT}        # Shade

application.yml использует переменные окружения для настройки служб, подобно тому, как рецепт перерабатывает ингредиенты в готовое блюдо.

Хранилище секретов

Безопасность секретной информации

Необходимо упускать из виду прямого указания чувствительных данных, вроде паролей или ключей API, в application.yml либо прямо в коде:

yaml
Скопировать код
shh-hide-it-here:
  myPassword: ${MY_PASSWORD} // Вы помните, что секреты следует хранить в секрете?

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

Привязка к файлам и профилям

Используйте профили и соответствующие им файлы application-{profile}.yml для более детального управления конфигурацией:

shell
Скопировать код
java -jar shinyApp.jar --spring.profiles.active=prod // Вот и пришло время продакшена!

Файлы, настроенные под конкретное окружение, предотвратят возможные ошибки.

Преодоление различий в окружениях

Особенности платформ и облачных провайдеров

Изучите особенности использования переменных окружения в контексте выбранной вами платформы или облачного провайдера.

Изоляция конфигурации

Практика хранения конфигурации независимо от кода способствует удобству обслуживания и гибкому управлению.

Создайте надежную систему

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

Полезные материалы

  1. Основные функциональные возможности — Официальная документация Spring Boot.
  2. Как использовать переменные окружения в application.properties — обсуждение на Stack Overflow.
  3. Spring PropertySource и YAML — руководство по использованию YAML с @PropertySource в Spring на Stack Overflow.
  4. Spring Cloud Config Environment Repository — управление окружениями через Spring Cloud.
  5. DZone — статья о @PropertySource в Spring Boot.
Свежие материалы