как получить случайный порт для настроенного слушателя при весенней загрузке - PullRequest
0 голосов
/ 24 января 2020

Я могу запустить этот порт случайным образом при выполнении Server.http.port = 0 в @ SpringBootTest с использованием атрибута свойств а как получить случайное значение свойства 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;
    }
}

Ответы [ 2 ]

2 голосов
/ 24 января 2020

В зависимости от версии Spring Boot:

1) Для версии> = 2.0.0 используйте аннотацию @org.springframework.boot.web.server.LocalServerPort, чтобы добавить порт, который выделено во время выполнения:

 @LocalServerPort
 private int port;

2) Для всех версий:

@Value("${local.server.port}")
private int port;
1 голос
/ 24 января 2020

Вы можете использовать произвольный порт, определив server.port = 0 в файле application.properties и получить по

  @org.springframework.boot.web.server.LocalServerPort
  private int localPort;
...