当前位置: 首页 > news >正文

如何在 IDEA 中在启动 Spring Boot 项目时加参数

如何在 IDEA 中在启动 Spring Boot 项目时加参数

在日常开发中,我们经常需要在启动 Spring Boot 项目的时候,临时修改一些参数,例如 端口号运行环境(profile)日志级别 等等。除了在 application.yml 文件里修改,我们还可以通过在 IDEA 启动配置中添加参数的方式来实现。这种方式更加灵活,适合临时调试或者本地开发时使用。

本文将详细介绍在 IDEA 中为 Spring Boot 启动项目加参数的方法。


一、在 application.yml 中配置端口号(默认方式)

application.yml 文件中可以直接写配置,例如修改端口号:

server:port: 8080

启动时项目会监听 8080 端口。
不过这种方式是写死在配置文件里的,如果要频繁切换端口或者测试不同环境,就不够灵活了。


二、通过 IDEA 启动配置添加参数

在 IDEA 里,点击右上角的运行/调试配置,选择 Edit Configurations,可以看到两个常用的参数输入框:

  • VM Options
  • Program arguments

在这里插入图片描述

这两者都可以传参,但作用范围不同。


1. VM Options(JVM 参数)

在 VM Options 中添加参数时,使用 -D 前缀,例如:

-Dserver.port=8082 -Dspring.profiles.active=dev -Dlogging.level.root=DEBUG

特点:

  • -Dkey=value 形式,会作为 JVM 系统属性
  • Spring Boot 会自动读取并覆盖配置文件里的值。
  • 也可以用来配置一些 JVM 相关的参数(比如内存、GC 等)。

等价于在代码中调用:

System.getProperty("server.port");

2. Program arguments(程序参数)

在 Program arguments 中添加参数时,使用 -- 前缀,例如:

--server.port=8083 --spring.profiles.active=test --logging.level.root=DEBUG

特点:

  • --key=value 形式,Spring Boot 启动时会自动解析。
  • 用来覆盖 application.ymlapplication.properties 中的配置。
  • 常用来传递业务相关参数,例如运行环境、端口号、日志级别等。

三、优先级说明

Spring Boot 对配置的加载有优先级,大体顺序如下(从低到高):

  1. application.yml / application.properties(默认配置文件)
  2. application-{profile}.yml(不同环境的配置文件,例如 application-dev.yml
  3. Program arguments--server.port=8083
  4. VM Options-Dserver.port=8082

👉 如果同一个参数在多个地方都设置了,优先级高的会覆盖低的
比如:在 application.yml 中设置端口是 8080,在 Program arguments 中传 --server.port=8083,最终端口就是 8083


四、推荐用法

  • 业务参数(端口、profile、日志级别等):用 --,写在 Program arguments
  • JVM 参数(堆大小、GC 配置、系统属性等):用 -D,写在 VM Options

这样既符合习惯,也便于区分不同类型的配置。


五、总结

在 IDEA 中启动 Spring Boot 项目时,可以通过以下方式传递参数:

  1. 修改配置文件application.yml):适合固定配置。
  2. VM Options(-D):传递 JVM 系统属性或 Spring Boot 参数。
  3. Program arguments(–):传递 Spring Boot 参数,覆盖配置文件。

通过合理使用这三种方式,就能更加灵活地控制 Spring Boot 项目的启动参数。


http://www.xdnf.cn/news/1356247.html

相关文章:

  • [Windows] PDF-XChange Editor Plus官方便携版
  • 海盗王3.0客户端从32位升级64位之路
  • 操作系统文件系统
  • [e3nn] 等变神经网络 | 线性层o3.Linear | 非线性nn.Gate
  • Excel 转化成JSON
  • GPT 模型详解:从原理到应用
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2024年12月22日真题
  • 以国产IoTDB为代表的主流时序数据库架构与性能深度选型评测
  • 对象作为HashMap的key的注意事项
  • 30分钟通关二分查找:C语言实现+LeetCode真题
  • 机器学习算法-朴素贝叶斯
  • 优化OpenHarmony中lspci命令实现直接获取设备具体型号
  • 机械学习综合练习项目
  • 基于SpringBoot的新能源汽车租赁管理系统【2026最新】
  • Linux 系统管理核心概念与常用命令速查
  • 春秋云镜 Hospital
  • 【Qt开发】常用控件(六)
  • 一个简洁的 C++ 日志模块实现
  • 【数位DP】D. From 1 to Infinity
  • 金山办公的服务端开发工程师-25届春招笔试编程题
  • Python训练营打卡 DAY 45 Tensorboard使用介绍
  • 基于电磁频谱地图的辐射源定位算法复现
  • 基于TimeMixer现有脚本扩展的思路分析
  • 基础IO
  • CryptSIPVerifyIndirectData函数分析
  • 刷题日记0823
  • 环境 (shell) 变量
  • Nacos-12--扩展:@RefreshScope和@ConfigurationProperties实现热更新的原理
  • Kubernetes笔记整合-1
  • 一种通过模板输出Docx的方法