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

Вопрос: Приложение My Spring Boot будет иметь 4 различные среды: Местный; выполняется локально на моей машине Dev UAT тычок Когда новый пользователь регистрируется для моего приложения, бэкэнд отправляет им электронное письмо для подтверждения своего адреса/учетной записи. В этом письме будет ссылка; пользователь нажимает ссылку, которая проверяет их в базе данных, и позволяет им войти в

Вопрос:

Приложение My Spring Boot будет иметь 4 различные среды:

  • Местный; выполняется локально на моей машине
  • Dev
  • UAT
  • тычок

Когда новый пользователь регистрируется для моего приложения, бэкэнд отправляет им электронное письмо для подтверждения своего адреса/учетной записи. В этом письме будет ссылка; пользователь нажимает ссылку, которая проверяет их в базе данных, и позволяет им войти в систему и использовать приложение.

Разумеется, эти ссылки должны иметь встроенную среду:

  • Локально, ссылка может быть http://localhost:9200/v1/data/accounts/verify?vt=12345
  • В dev ссылка может быть:
  • В UAT ссылка может быть:
  • В Prod ссылка может быть:

Во всех трех средах порт hostname + отличается. Локально я указываю localhost:9200 (оба localhost + port). Не локально мне не нужно указывать порт, потому что приложение будет работать на узлах за балансировщиком нагрузки. В производстве мне не нужен подобный среде субдомен, такой как dev или uat.

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

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

Но я чувствую, что умные люди, которые составляют сообщество Spring Boot, вероятно, уже решили эту проблему для меня… не так ли? Есть ли свойство приложения Spring Boot, которое я могу установить, что позаботится обо всем этом для меня?

Лучший ответ:

В комментариях я читал, что ваша главная задача – обновить свойство без необходимости изменять ваш.JAR/.WAR или изменять какой-либо код.

Это возможно, так как вы можете экпортировать конфигурацию загрузки Spring. Если вы проверите документы Externalized Configuration, вы увидите, что он ищет свойства внутри:

  1. Переменные среды ОС.

  1. Специфичные для приложения свойства приложения за пределами вашей упакованной банки (application-{profile}.properties и варианты YAML)
  2. Специфичные для приложения свойства приложения, упакованные в вашу банку (application-{profile}.properties и варианты YAML)
  3. Свойства приложения за пределами вашей упакованной банки (варианты application.properties и YAML).
  4. Свойства приложения, упакованные внутри вашей банки (варианты application.properties и YAML).

Таким образом, в идеале вы можете поместить файл application.properties рядом с вашим JAR и обновить свойства в этом файле в зависимости от среды, в которой вы работаете.

Оцените статью
Добавить комментарий