我能够在@SpringBootTest使用属性属性使Server.http.port=0的同时随机运行此端口,但是如何使用属性属性获取Server.http.port属性的随机值?
@Configuration
public class PortConfig {
@Value("${server.http.port}")
private int httpPort;
@Bean
public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory();
factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {
@Override
public void customize(Undertow.Builder builder) {
builder.addHttpListener(httpPort, "0.0.0.0");
}
});
return factory;
}
}
取决于您的 Spring 引导版本:
1( 对于版本>= 2.0.0,请使用 @org.springframework.boot.web.server.LocalServerPort 注释来注入在运行时分配的端口:
@LocalServerPort
private int port;
2( 对于所有版本:
@Value("${local.server.port}")
private int port;
您可以通过在application.properties 文件中定义server.port=0来使用随机端口,然后通过
@org.springframework.boot.web.server.LocalServerPort
private int localPort;