Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
1429

Использование переменных окружения в application.properties в Spring Boot

В работе с веб-приложениями на Spring Boot часто возникает потребность использовать различные настройки для разных окружений: локальное, тестовое, продуктивное

В работе с веб-приложениями на Spring Boot часто возникает потребность использовать различные настройки для разных окружений: локальное, тестовое, продуктивное и т.д.

Допустим, есть веб-приложение, которое использует базу данных MySQL. Это приложение сначала тестируется локально, затем код отправляется в репозиторий Bitbucket, где его проверяет Jenkins. Если сборка успешна, приложение разворачивается на OpenShift.

В такой ситуации возникает проблема с настройками доступа к базе данных, которые указаны в файле application.properties. Нельзя жестко задавать эти параметры, потому что они будут отличаться в зависимости от окружения.

spring.datasource.url =
spring.datasource.username =
spring.datasource.password =

Одно из возможных решений — использование системных переменных окружения. Для этого создаются переменные окружения с соответствующими названиями и значениями.

export OPENSHIFT_MYSQL_DB_HOST="jdbc:mysql://localhost"
export OPENSHIFT_MYSQL_DB_PORT="3306"
export OPENSHIFT_MYSQL_DB_USERNAME="root"
export OPENSHIFT_MYSQL_DB_PASSWORD="123asd"

Затем эти переменные можно использовать в Java-коде таким образом:

Map<String, String> env = System.getenv();

String password = env.get("OPENSHIFT_MYSQL_DB_PASSWORD");   
String userName = env.get("OPENSHIFT_MYSQL_DB_USERNAME");   
String sqlURL = env.get("OPENSHIFT_MYSQL_DB_HOST"); 
String sqlPort = env.get("OPENSHIFT_MYSQL_DB_PORT");

Однако возникает вопрос, как использовать эти переменные в файле application.properties.

Например, было предпринято следующее попытка:

spring.datasource.url = ${sqlURL}:${sqlPort}/»nameofDB»
spring.datasource.username = ${userName}
spring.datasource.password = ${password}

Но это не сработало из-за того, что переменные окружения не были правильно заданы или использованы в файле application.properties.

Правильный способ использования переменных окружения в Spring Boot

Чтобы использовать переменные окружения в Spring Boot, нужно указать их в файле application.properties следующим образом:

spring.datasource.url = ${OPENSHIFT_MYSQL_DB_HOST}:${OPENSHIFT_MYSQL_DB_PORT}/nameofDB
spring.datasource.username = ${OPENSHIFT_MYSQL_DB_USERNAME}
spring.datasource.password = ${OPENSHIFT_MYSQL_DB_PASSWORD}

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

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

Добавить комментарий

Подарок
Забрать подарок