我在这里指的是答案
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();
}
我遇到的问题是尽管我根据上述属性设置了服务器端口,因为我已经在我的application.yml中设置了服务器端口,但似乎两个应用程序都采用了此设置,因此存在端口冲突。我该怎么解决?
application.yml
server:
ssl:
..stuff..
port: 8443
答案 0 :(得分:1)
不设置属性...在运行命令中使用命令行参数:
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");
命令行参数优先于应用程序属性。这样做的结果是,应用程序属性的创建方式完全相同,但是这些属性将覆盖所有现有相同的属性。