Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用随机端口创建spring?_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何使用随机端口创建spring?

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},但这并不保证端口可以自由使用。要知道端口是否可用,简单的测试操作系

Spring boot具有如上所述的随机端口生成。但是这个例子是关于web配置的。有没有一种方法可以生成随机端口号,检查它是否可用,并为bean创建保留它?例如,类似这样的事情:

@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();
                }
        }
    }
}

一旦你拿到一个免费的,你打算如何使用这个端口?