Я пытаюсь загрузить переменные окружения из файла .env
в своем приложении Spring Boot, используя:
implementation 'io.github.cdimascio:java-dotenv:5.2.2'
Вот часть моего application.properties
:
spring.datasource.url=${DB_URL} spring.datasource.username=postgres spring.datasource.password=${DB_PASSWORD} stripe.api.key=${STRIPE_API_KEY}
Мой файл .env:
DB_URL=jdbc:postgresql://localhost:5432/mydb DB_PASSWORD=mysecretpassword STRIPE_API_KEY=my_stripe_key
Переменные окружения не загружаются в application.properties
при запуске приложения, и я получаю ошибки, такие как:
URL должен начинаться с 'jdbc'
Я попытался разместить файл .env
в корневом каталоге, и класс Dotenv
правильно считывает переменные в главном методе.
Как мне правильно загрузить переменные .env
в application.properties
Spring Boot с помощью java-dotenv
?
Я хотел, чтобы .env работал и подключался, но это не так.
Вам стоит обратить внимание на https://github.com/paulschwarz/spring-dotenv проект spring-dotenv
, который внедряет файл .env
как источник свойств spring.
Посмотрите другой вопрос, похожий на ваш: Использование файлов dotenv с Spring Boot
Ответ
Чтобы загрузить переменные окружения из файла .env
в вашем Spring Boot приложении с помощью библиотеки java-dotenv
, необходимо выполнить несколько шагов. Давайте посмотрим, как это сделать:
1. Убедитесь, что библиотека подключена
Вы правильно указали зависимость в вашем build.gradle
:
implementation 'io.github.cdimascio:java-dotenv:5.2.2'
2. Загружайте переменные в основном методе
Вам нужно загрузить переменные окружения из файла .env
перед тем, как ваше приложение Spring Boot начнет инициализацию. Для этого вы можете создать класс с методом main
, как показано ниже:
import io.github.cdimascio.dotenv.Dotenv;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class YourApplication {
public static void main(String[] args) {
// Загружаем .env файл
Dotenv dotenv = Dotenv.load();
// Установка системных свойств из .env
System.setProperty("DB_URL", dotenv.get("DB_URL"));
System.setProperty("DB_PASSWORD", dotenv.get("DB_PASSWORD"));
System.setProperty("STRIPE_API_KEY", dotenv.get("STRIPE_API_KEY"));
SpringApplication.run(YourApplication.class, args);
}
}
3. Проверьте файл .env
Убедитесь, что ваш файл .env
находится в корне проекта и содержит правильные значения. В вашем случае это должно выглядеть так:
DB_URL=jdbc:postgresql://localhost:5432/mydb
DB_PASSWORD=mysecretpassword
STRIPE_API_KEY=my_stripe_key
Обратите внимание на правильную конфигурацию DB_URL
, она должна начинаться с jdbc
.
4. Настройка application.properties
Ваш файл application.properties
должен содержать следующие строки:
spring.datasource.url=${DB_URL}
spring.datasource.username=postgres
spring.datasource.password=${DB_PASSWORD}
stripe.api.key=${STRIPE_API_KEY}
Заключение
После выполнения этих шагов, ваше Spring Boot приложение должно корректно загружать переменные из файла .env
, и ошибки, подобные "URL must start with ‘jdbc’", не должны возникать.
Также вы можете рассмотреть использование библиотеки spring-dotenv, которая автоматически интегрирует переменные из файла .env
как источник свойств Spring. Это может упростить вашу конфигурацию без необходимости вручную устанавливать системные свойства.