【发布时间】:2015-09-14 06:59:18
【问题描述】:
我想运行一个 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 Profiles。我在启动时为 SpringApplicationBuilder 提供了我的每个应用程序上下文的配置文件,并在 @Components 上使用了 @Profile("some_profile"),它应该只对某些上下文可用。
【问题讨论】:
-
你能考虑使用Spring Profiles吗?
标签: java spring spring-mvc tomcat spring-boot