Java 如何使用随机端口创建spring?
Spring boot具有如上所述的随机端口生成。但是这个例子是关于web配置的。有没有一种方法可以生成随机端口号,检查它是否可用,并为bean创建保留它?例如,类似这样的事情:Java 如何使用随机端口创建spring?,java,spring,spring-boot,Java,Spring,Spring Boot,Spring boot具有如上所述的随机端口生成。但是这个例子是关于web配置的。有没有一种方法可以生成随机端口号,检查它是否可用,并为bean创建保留它?例如,类似这样的事情: @Bean public void myBean (@Value("${somePort}") String port) { return new MyBean(port); } 请注意,spring的随机属性类似于${random.int},但这并不保证端口可以自由使用。要知道端口是否可用,简单的测试操作系
@Bean
public void myBean (@Value("${somePort}") String port) {
return new MyBean(port);
}
请注意,spring的随机属性类似于
${random.int}
,但这并不保证端口可以自由使用。要知道端口是否可用,简单的测试操作系统会尝试打开该端口,看看是否没有错误。如果可以,那么您可以自由使用它。关于如何做到这一点,这里有几个答案:
如果每次都需要一个随机端口,只需使用0
。它将使用下一个可用端口:
import java.io.IOException;
import java.net.ServerSocket;
public class DemoApplication {
public static void main(String[] args) {
ServerSocket socket = null;
try {
socket = new ServerSocket(0);
System.out.println(socket.getLocalPort());
socket.accept();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null)
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
一旦你拿到一个免费的,你打算如何使用这个端口?