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"