【问题标题】:Spring Boot sperate @Configurations for multiple application contextsSpring Boot 为多个应用程序上下文分开 @Configurations
【发布时间】: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"),它应该只对某些上下文可用。

【问题讨论】:

标签: java spring spring-mvc tomcat spring-boot


【解决方案1】:

使用Profiles 这是一个很棒的弹簧功能,只加载与配置文件关联的bean。 完成后,使用不同的 portprofile 参数启动您的应用程序 N

例如:这是您将如何开始第一个,然后将其余部分执行到您的 N

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

【讨论】:

  • 这看起来很有希望。我会在当天晚些时候尝试并报告:)
  • 抱歉,忘记报告了...这种使用配置文件实际上是我的解决方案!
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 2019-08-13
  • 2015-11-12
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
相关资源
最近更新 更多