Spring Boot (JAR) с несколькими сервлетами диспетчера для различных API REST с Spring Data REST

У меня есть проект, который использует Spring Boot для генерации исполняемого JAR, который предоставляет REST API с Spring Data REST. Он также интегрирован с Spring Security OAuth. Это отлично работает. Моя проблема заключается в следующем,

Я хочу иметь разные модули для REST API, которые я хочу включить, только если соответствующий JAR с репозиториями JPA находится в пути к классам (он был определен как зависимость).

Дело в том, что я хочу, чтобы они были независимы друг от друга. Я хочу иметь возможность обслуживать их в разных сервлетах диспетчера с разными сопоставлениями, чтобы я мог указать разные baseUri для каждого и иметь разные корневые URL-адреса для обнаружения ресурсов.

Я постараюсь прояснить это:

Модуль А API:

JAR, содержащий, например, XRespository и YRespository для ресурсов X и Y.Диспетчер сервлет А.Отображение сервлета: / api / moduleA /Базовый URI для Spring Data REST: / api / moduleA /Если я проверю URL / api / moduleA /, я должен обнаружить ресурсы X и Y.

Модуль B API:

JAR, содержащий, например, PRespository и QRespository для ресурсов P и Q.Диспетчер сервлет Б.Отображение сервлета: / api / moduleB /Базовый URI для Spring Data REST: / api / moduleB /Если я проверю URL / api / moduleB /, я должен обнаружить ресурсы P и Q.

Больше модулей ...

Кроме этого, у меня может быть другой сервлет-диспетчер, в котором я храню конечные точки / oauth / * вместе с другими настраиваемыми контроллерами, и конфигурация безопасности должна работать правильно для всех (/ *)

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

Я также пытался сделать это с иерархическими контекстами приложения с SpringApplicationBuilder, имея в каждом дочернем контексте конфигурацию, которая определяет каждый сервлет диспетчера, каждый RepositoryRestMvcConfiguration и каждую аннотацию @EnableJpaRepositories, определяющую различные пакеты для сканирования. В любом случае, я не могу даже загрузить контекст, так как они не созданы как WebApplicationContext, что приводит к сбою, потому что нет доступного ServletContext.

Любая помощь / предложение? Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос