Spring Boot sperate @конфигурации для нескольких контекстов приложений

Я хотел бы запустить одно приложение spring boot, но слушать его на нескольких портах.

цель состоит в том, чтобы позволить Apache пересылать несколько (суб-) доменов в приложение spring boot (Tomcat) на разных портах. Пример:

         example.com/** -> PORT 8080
  client.example.com/** -> PORT 8090
employee.example.com/** -> PORT 8100

насколько я понял из нескольких потоков на SO, мне лучше всего запускать несколько @SpringBootApplication аннотированные классы из одного основного класса, верно? (https://stackoverflow.com/a/25870132/1510659)

то, что я еще не понял, - это как настроить каждое из этих приложений отдельно.

предположим, я запустил эти три приложения, как показано в связанном сообщении выше:

MainExampleApplication
ClientExampleApplication
EmployeeExampleApplication

теперь, например, я хочу иметь отдельную Spring Security @Configuration классы для каждого из этих приложений, а также @RequestMappings которые могут иметь одинаковое значение (например,"/").

как должен ли я сказать @Configuration или @Controller классы, какое приложение они назначены?

или есть свойства, которые можно передать приложениям при запуске, чтобы указать, какие ресурсы отвечают за контекст?

Я надеюсь, что я не иду в совершенно неправильном направлении здесь. У меня есть опыт работы с Spring MVC и настроены некоторые довольно упрощенные приложения Spring, но не с несколькими контекстами. Я был бы очень рад, если бы кто-то мог привести меня в правильное направление. Заранее спасибо.

обновление

как упоминалось в ответе iamiddy и комментарии xeon, для этого я использовал профили Spring. Я предоставил SpringApplicationBuilder профиль для каждого из контекстов моего приложения при запуске и использовал @Profile("some_profile") на @Components это должно быть доступно только для некоторых контекстов.

1 ответов


использовать Profiles Это отличная весенняя функция, загружает только бобы, ассоциированные с профилем. После этого запустить приложение N С port и profile аргументы

Ex: вот как вы начнете первый, сделайте это для остальных, чтобы ваш N

java -jar -Dspring.profiles.active=production1 -Dserver.port=9000 app.jar