Spring Лучший подход для нескольких сред

У меня есть следующее:

  • Система A - Авторизация (REST API)
  • Система B - необходимо проверить на подлинность
  • Система C - необходимо проверить на подлинность
  • Система D - необходимо проверить на подлинность

И у меня много обстановки

  • развитие
  • гомолог
  • производство

Каждый из них будет иметь разные URL для System A, Поэтому я хочу создать проект, который будет интегрировать эти системы. Поскольку все системы используют Джерси и Спринг, я могу создать один фильтр (джерси), который прервет запрос в случае, если пользователь не авторизован.

Так что идея состоит в том, чтобы создать Integration System это будет JAR с фильтрами Jerseys и использует родительскую конфигурацию (активный профиль из Spring) для получения правильного URL. Я мог бы даже использовать этот JAR-файл, чтобы заставить Систему B взаимодействовать с Системой D, если бы я мог сделать эту работу.

Хитрость заключается в том, чтобы заставить этот JAR получить правильный файл.properties, основанный на Enviroment (установленном в родительском проекте). Если честно, я не знаю с чего начать.

Читая DOCs для Spring Environment, я нашел:

Не используйте профили, если более простой подход может сделать работу. Если единственное, что меняется между профилями, - это значение свойств, то существующий PropertyPlaceholderConfigurer / в Spring может быть всем, что вам нужно.

У меня может быть 3 разных файла свойств (разработка, гомолог или производство) или у меня может быть один файл свойств с разными ключами:

system.a.url.develpment=http://localhost:8080/systemA/authorize
system.a.url.homolog=http://localhost:8081/systemA/authorize
system.a.url.production=http://api.systemA.com/authorize

Каков наилучший подход? Чтобы ты делал?

1 ответ

В таком "простом" случае я бы использовал файл свойств только для конфигурации URL-адресов и имел разные конфигурационные файлы для разных сред (dev, prod,..) с одним (одноименным свойством), например

system.a.url=http://localhost:8081/systemA/authorize

Вы можете управлять своими файлами свойств вручную (например, за пределами вашего jar/war) или использовать профили maven, чтобы сделать файл jar / war специфичным для вашей среды. Но я не вижу необходимости в пружинных профилях.

РЕДАКТИРОВАТЬ: В качестве альтернативы вы можете использовать переменные среды, чтобы "настроить" параметры, специфичные для среды (какое совпадение в именах:)). Обратите внимание, что вы можете иметь различные среды также внутри одной машины. Для более подробной информации, например, это.

export AUTH_URL="http://localhost:8081/systemA/authorize"
Другие вопросы по тегам