代码之家  ›  专栏  ›  技术社区  ›  PDStat

启动多个spring启动应用程序进行测试

  •  0
  • PDStat  · 技术社区  · 7 年前

    我指的是这里的答案

    Instantiate multiple spring boot apps in test

    测试中使用了 SpringApplicationBuilder 创建并运行应用程序。如。

    @Test
    public void testSomething() {
        SpringApplicationBuilder app1 = new SpringApplicationBuilder(com.app1.Application.class)
          .properties("server.port=8080");
    
        app1.run();
    
        SpringApplicationBuilder app2 = new SpringApplicationBuilder(com.app2.Application.class)
          .properties("server.port=8081");
    
        app2.run();
    }
    

    我的问题是,尽管我按照上面的属性设置了服务器端口,因为我已经在应用程序中设置了服务器端口。yml这两个应用程序似乎都采用此设置,因此存在端口冲突。我怎么解决这个问题?

    应用yml

    server:
        ssl:
            ..stuff..
        port: 8443
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Randy Casburn    7 年前

    不要设置属性。。。将命令行参数与run命令一起使用:

    SpringApplicationBuilder app1 = new SpringApplicationBuilder(com.app1.Application.class);
    
        app1.run("server.port=8080");
    
    SpringApplicationBuilder app2 = new SpringApplicationBuilder(com.app2.Application.class);
    
        app2.run("server.port=8081");
    

    命令行参数优先于应用程序属性。这样做的结果(当然)是应用程序属性的创建完全相同,但它们将覆盖任何 现有的 同样的属性。