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