#java #jersey #environment-variables #dropwizard
#java #джерси #переменные среды #dropwizard
Вопрос:
У меня возникли проблемы с поиском хороших ресурсов для конфигурации среды dropwizard, руководства от dropwizard мне не очень помогают.
Я пытаюсь сохранить свою jwtSecret
конфигурацию в config.yml
качестве переменной среды, чтобы она оставалась секретной, даже если я делаю свой код с открытым исходным кодом как
jwtSecret: ${JWT_SECRET}
Я прочитал руководства и знаю, что мне нужно добавить SubstitutingSourceProvider
, чтобы успешно заменить конфигурацию моими переменными среды. Однако я не нахожу, где сохранить мои переменные окружения. Есть ли конкретное место, где dropwizard находит его, или мне нужно где-то добавить путь к переменным среды?
Ответ №1:
Я не совсем уверен, с какой частью вам нужна помощь, но добавление переменных среды затрагивает многие моменты.
Сначала мы включаем эту функцию, добавляя ее в функцию инициализации приложения:
bootstrap.setConfigurationSourceProvider(new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(), new EnvironmentVariableSubstitutor(false)));
Затем есть config.yml:
jwtSecret: ${JWT_SECRET}
Чтобы получить доступ к переменной в вашем приложении, вам необходимо добавить ее в класс конфигурации приложения:
private String jwtSecret;
( средство получения и установки для него)
И, наконец, вам нужно добавить переменную JWT_SECRET в системные переменные среды. Это зависит от того, какую операционную систему вы используете, и хотите ли вы установить ее временно или постоянно.
Комментарии:
1. Возможно ли иметь в моем проекте файл .env для сохранения там переменных окружения или мне нужно сохранить его в моем .zshrc?
2. Это зависит от того, как вы запускаете приложение. Например, я использую IntelliJ для разработки, и я настроил переменные среды в окне конфигурации запуска проекта IntelliJ, если я запускаю приложение из пакета Java за пределами IntelliJ, я сначала запускаю сценарий оболочки, в котором настроены значения среды, а затем запускаю пакет — поэтому у меня их нет вмой .bashrc тоже. В моих промежуточных и программных средах они были настроены для контейнера k8s.