Фон:
Я работаю над микросервисом java Spring REST, который должен работать с несколькими идентичными серверными системами и несколькими идентичными базами данных в зависимости от параметров запроса.
В основном у меня 3 "марки". Для каждого бренда есть набор последующих услуг и база данных. Я не могу их контролировать.
Моя весенняя служба получит бренд как часть запроса, и ей нужно будет вызвать нужные нижестоящие службы и использовать правильную базу данных.
Раньше я имел дело с это за счет наличия отдельного экземпляра весеннего сервиса для каждой из марок. Для каждой марки будет один файл свойств, и Spring будет использовать его для подключения фасоли. У меня были бы отдельные URL-адреса для каждой марки, и проблем не было.
Некоторым из моих bean-компонентов нужно знать о «бренде» во время создания, поскольку они являются оболочкой для подключений нижестоящих сервисов. Т.е., как только компонент будет создан, не будет возможности переключить его на «другой бренд».
Проблема:
Я хотел бы изменить это так, чтобы один экземпляр моей службы мог обрабатывать запросы для любого бренда.
Требования: Я думал о следующем решении:
Иметь общий файл свойств для небрендированных вещей. Spring будет связывать любые небрендированные бобы и хранить их как одиночные бобы.
Имейте файл свойств со спецификациями бренда c URL-адреса и c для каждого бренда Spring создаст набор одноэлементных beans для каждого бренда, используя соответствующий файл свойств.
Затем, когда запрос придет весной, будет читать параметры запроса и использовать bean-атрибуты c для этого бренда.
Производительность важна для меня, поэтому я хотел бы повторно использовать bean-компоненты насколько возможно.
Я хотел бы сделать это как можно более прозрачным, чтобы людям, создающим новые bean-компоненты, не нужно было беспокоиться о том, чтобы делать что-либо за пределами стандартной конфигурации / класса контекста.
Кто-нибудь знает, что бы быть лучшим решением для достижения этой цели?