小编典典

Spring Boot sperate @Configurations用于多个应用程序上下文

spring-boot

我想运行一个Spring Boot应用程序,但让它在多个端口上侦听。

目的是让Apache在不同端口上将多个(子)域转发到Spring Boot应用程序(Tomcat)。例:

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

据我从SO上的多个线程了解到,最好@SpringBootApplication从一个主类启动多个Annotated类,对吗?(https://stackoverflow.com/a/25870132/1510659

我还不了解的是如何分别配置每个应用程序。

假设我已经启动了这三个应用程序,如上面的链接文章所示:

MainExampleApplication
ClientExampleApplication
EmployeeExampleApplication

现在,例如,我想为@Configuration这些应用程序中的每一个提供单独的Spring Security
类,以及@RequestMappings它们可能具有相同的值(例如“ /”)。

如何告诉@Configuration@Controller类将它们分配给哪个应用程序?

还是有一些属性可以在启动时传递给应用程序,以指定哪些资源负责上下文?

我希望我不会在这个方向上完全错误。我确实具有Spring MVC的经验,并且已经配置了一些相当简单的Spring应用程序-
但是没有多个上下文。如果有人可以带领我朝正确的方向前进,我将感到非常高兴。先感谢您。

更新

如iamiddy的回答和xeon的评论中所述,我为此使用了Spring
Profiles。我在启动时为SpringApplicationBuilder提供了每个应用程序上下文的配置文件,并在@Profile("some_profile")上使用了@Components仅对某些上下文可用的。


阅读 486

收藏
2020-05-30

共1个答案

小编典典

使用Profiles它是一个很棒的spring功能,仅加载与配置文件关联的bean。完成此操作后,请使用different 和arguments 启动
N 次应用程序port``profile

例:这是您开始第一个的方式,其余的则做到您的 N

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

2020-05-30