я следующие:Spring Лучший подход для нескольких сред
- Система А - Авторизация (REST API)
- System B - Необходимо проверить AUTH
- System C - Необходимо проверить AUTH
- система D - Необходимо проверить AUTH
И у меня есть много среды:
- Разработка
- гомолог
- Производство
Каждый из них будет иметь разные адреса для System A
. Поэтому я хочу создать проект, который будет интегрировать эти системы. Поскольку все системы используют Джерси и Весну, я могу создать один фильтр (трикотаж), который прервет запрос в случае, если пользователь не авторизовался.
Итак, идея состоит в том, чтобы создать Integration System
, который будет JAR с фильтрами Jerseys и использует конфигурацию родителей (активный профиль из Spring), чтобы получить правильный URL. Я мог бы даже использовать этот JAR, чтобы сделать Система B общается с Система D также, если я могу сделать эту работу.
Трюк заключается в том, что этот JAR получает правильный файл .properties на основе Enviroment (устанавливается в родительском проекте). Честно говоря, я не знаю, с чего начать.
Чтение Документов для Spring среды я нашел:
Не использовать профили, если более простой подход может получить работу. Если единственное, что меняется между профилями, это значение свойств, существующее SpringSlaceholderConfigurer/может быть всем необходимым.
Я мог бы иметь 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
Каков наилучший подход? Что бы вы сделали?
Последний, используя профили maven для создания различных артефактов, является не go imho. Вам нужен один проверенный артефакт, который вы переходите в разные среды, так как это то, что вы тестируете, нет гарантии, что все артефакты будут точно такими же. Единственное жизнеспособное решение - использовать файл внешних свойств и иметь его в хорошо известном месте. –
Для этого мне нужен только ОДИН JAR. Потому что JAR будет зависеть от всех систем. Этот JAR должен знать, в какой среде работает родительский проект, поэтому я могу получить правильный URL. –
Если вы хотите только одну банку, то вы можете зависеть от внешней конфигурации. Или, альтернативно, вам нужно использовать любой вход извне (переменные системы или переменные -Dparams), чтобы определить вашу среду или непосредственно необходимый URL (в зависимости от того, у вас больше конфигурации, связанной с одной средой) – sodik