Аппликейшн на Spring MVC выставляет несколько разных REST API-ев. Все эти API внутри используют на 90% один и тот же код, но отличаются интерфейсно — нюансы сериализации DTO, всякие там HandlerMethodArgumentResolver'ы, и т.д. Можно как-то без залезания глубоко во внутренности Spring MVC описать несколько отдельных конфигураций и выставить их поотдельности в /api1, /api2, и т.д.?
Псевдокод:
// для этих эндпоинтов хочется никогда не менять контракты
@EnableWebMvc("/public")
class Api1Config {
...
@Bean
PublicUsersController c1(UsersRepository usersRepository) { ... }
@Bean
PublicOrdersController c2(OrdersRepository ordersRepository) { ... }
}
// для этих эндпоинтов хочется менять контракты когда хочу
@EnableWebMvc("/private")
class Api2Config {
...
@Bean
PrivateUsersController c3(UsersRepository usersRepository) { ... }
@Bean
PrivateOrdersController c4(OrdersRepository ordersRepository) { ... }
}
Понятно, что есть вариант — запускать 2 разных аппликейшна с разными активными профилями, но хочется оставить именно 1 аппликейшн и желательно 1 спринговый контекст.