SpringBoot防止“端口正在使用”

时间:2018-10-26 14:25:35

标签: java spring spring-boot port

我正在使用Spring Boot,我想知道是否存在定义的方法或某种开放源代码库来确保建立连接的安全性。

例如,默认端口为8080,因此如果该端口已在使用中,我会将其设置为8081,而不是使应用程序无法启动。

2 个答案:

答案 0 :(得分:2)

添加到属性文件server.port=0中,Spring Boot会自动选择可用端口。

请参见docs(第75.7节-这是解决您的问题的好例子)。

答案 1 :(得分:1)

我只是想让您重新考虑一下,它还没有准备就绪,需要进行一些改进,但是您绝对可以在main方法中尝试类似的方法:

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {

        SpringApplication app = new SpringApplication(MyApplication.class);
        int serverPort = 8080;
        do {
            try {
                app.setDefaultProperties( Collections.singletonMap( "server.port", Integer.toString(serverPort) ) );
                app.run(args);
            } catch (Exception e) {
                serverPort++;
            }
        } while (serverPort < 9000);
    }
}

您可能已经注意到,理论上应该在出现错误的情况下一次又一次尝试设置端口。我将其限制为端口9000,但是您可以尝试修改更适合您的意图的解决方案,并在特定用例场景中进行调整。