SpringBoot 动态端口号启动,SpringBoot 自动寻找可用端口号启动,java 检测端口号占用
在实际开发和测试环境中,端口冲突 是一件令人头疼的问题。默认情况下,Spring Boot 应用会尝试使用配置的 server.port
(如 8080),但如果该端口被占用,则启动失败。
本文介绍一种 自动查找可用端口并启动 Spring Boot 应用 的实用方式,可有效解决端口冲突问题,尤其适用于多实例测试场景。
关键实现思路
- 使用
ServerSocket
判断端口是否被占用; - 从默认端口开始,依次向上查找第一个可用端口;
- 将找到的可用端口注入 Spring Boot 应用。
Java 实现代码
复制
package com.example.dynamicport;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import java.io.IOException;
import java.net.ServerSocket;
@SpringBootApplication
public class ApplicationTest {
// 从指定端口开始查找可用端口
private static int findAvailablePort(int defaultPort) {
int port = defaultPort;
while (true) {
try (ServerSocket socket = new ServerSocket(port)) {
return port;
} catch (IOException e) {
port++;
if (port > 65535) {
throw new IllegalStateException("没有可用端口!");
}
}
}
}
public static void main(String[] args) {
int port = findAvailablePort(8080);
new SpringApplicationBuilder(ApplicationTest.class)
.properties("server.port=" + port)
.run(args);
System.out.println("应用启动成功,使用端口:" + port);
}
}
作者:https://blog.xn--rpv331d.com/望舒
链接:https://blog.xn--rpv331d.com/望舒/blog/63
转载注意保留文章出处...
0
0
0
41
No data