千家信息网

SpringBoot随机端口启动怎么实现

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了SpringBoot随机端口启动怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot随机端口启动怎么实现文章都会有所收获,下面我们
千家信息网最后更新 2026年11月03日SpringBoot随机端口启动怎么实现

这篇文章主要介绍了SpringBoot随机端口启动怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot随机端口启动怎么实现文章都会有所收获,下面我们一起来看看吧。

一、SpringBoot随机端口

1.基础介绍

  • 随机端口可以自动找指定范围内可使用的端口,不需要在配置文件中指定固定的启动端口

  • 例如在SpringBoot中假如需要运行多个实例,则需要单独修改配置文件比较麻烦

  • 随机端口的原理就是与对应socket端口建立连接,能连接则已被使用,反之未被使用

  • 随机获取的端口校验可使用之后通过System.setProperty("属性名称", port);写入内存,然后就可以在配置文件中获取到

  • 如果写入的名称为server.port则不用在配置文件中指定端口,否则需要配置server.port=${属性名称}

  • 本实践基于SpringBoot普通工程,直接创建项目脚手架即可

  • 【tip】例如在SpringCloud项目中服务提供者,可以使用随机端口快速启动多个服务,而不需要单独修改配置文件再启动

2.实现步骤

创建ServerPortUtil .java端口工具类,使用socket连接指定端口,例如有以下条件

a. 指定端口范围为8000-65535
b. 识别端口是否使用,已被使用则继续随机产生
c. 如果全部端口不可使用则直接抛出错误,中断运行

import java.net.InetAddress;import java.net.Socket;import java.util.Random;public class ServerPortUtil {    private static final int MAX_PORT = 65535;    private static final int MIN_PORT = 8000;    public static String getAvailablePort() {        Random random = new Random();                // 最大尝试次数为端口范围        int maxRetryCount = MAX_PORT - MIN_PORT;        while (maxRetryCount > 0) {                // 指定范围内随机端口,随便写的算法,根据自己需要调整            int port = random.nextInt(MAX_PORT - MIN_PORT) + MIN_PORT;            boolean isUsed = isLocalePortUsing(port);            if (!isUsed) {                return String.valueOf(port);            }            --maxRetryCount;        }        System.out.println("系统暂无端口可用,运行结束");        System.exit(1);        return null;    }    /**     * 检查给定端口是否可用     *     * @author tianxincode@163.com     * @since 2020/10/14     */    public static boolean isLocalePortUsing(int port) {        try {            // 建立一个Socket连接, 如果该端口还在使用则返回true, 否则返回false, 127.0.0.1代表本机            new Socket(InetAddress.getByName("127.0.0.1"), port);            return true;        } catch (Exception e) {            // 异常说明端口连接不上,端口能使用        }        return false;    }}

创建StartCommand.java命令类,调用随机端口功能获取端口信息,然后将端口信息写入运行环境中
a. 如果传入的参数包含了端口则使用指定的,否则使用自动生成

import com.codecoord.randomport.util.ServerPortUtil;import org.springframework.util.StringUtils;public class StartCommand {    /**     * 端口属性名称,如果名称为server.port则在配置文件中不用指定,否则需要指定为此处配置的名称,如${auto.port}     */    private static final String SERVER_PORT = "auto.port";    public StartCommand(String[] args) {        boolean isServerPort = false;        String serverPort = "";        if (args != null) {            for (String arg : args) {                if (StringUtils.hasText(arg) && arg.startsWith("--server.port" )) {                    isServerPort = true;                    serverPort = arg;                    break;                }            }        }        String port;        if (isServerPort) {           port = serverPort.split("=")[1];        } else {            port = ServerPortUtil.getAvailablePort();        }        System.out.println("Current project port is " + port);        System.setProperty(SERVER_PORT, port);    }}

在启动类启动前向环境写入端口信息

import com.codecoord.randomport.config.StartCommand;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicatiopublic class SpringbootRandomPortApplication {    public static void main(String[] args) {        // 写入端口信息         new StartCommand(args);        SpringApplication.run(SpringbootRandomPortApplication.class, args);    }}

在配置文件中指定端口为随机生成的端口信息

server:  # 随机端口配置  port: ${auto.port}

项目测试 正常启动项目,可以在控制台看到启动的端口信息

二、SpringBoot多实例运行

SpringBoot的多实例运行在IDEA中配置如下

然后在启动上run/debug启动即可

关于"SpringBoot随机端口启动怎么实现"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"SpringBoot随机端口启动怎么实现"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

端口 配置 文件 信息 名称 运行 范围 项目 中指 实例 属性 知识 不用 内容 多个 环境 篇文章 a. 服务 生成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 互联网加科技 百单网互联网科技有限公司 金融科技创新监管互联网金融 互联网科技集团 齐家互联网科技 百单互联网科技有限公司 郑州华宇互联网科技 齐家互联网科技有限公司 互联网科技宣传片 哈尔滨新华互联网科技学院 浙江互联网科技研学营 新兴科技互联网创新大赛颁奖典礼 想开互联网科技公司怎么样 南博望互联网科技有限公司 卓翼科技产业互联网合作 互联网科技快讯热点 美国五大互联网科技公司市值多少 科技互联网专业务虚会材料 株洲百竞科技的互联网营销顾问 中关村互联网 科技集团 互联网的科技创新 左右互联网络科技 互联网与医疗科技 速维有品互联网信息科技(苏州)有限公司 中和天地互联网科技有限公司 2021互联网科技公司排名 济南小医互联网科技有限公司招聘 珠海东科互联网科技有限公司 前海云享互联网科技
0