当前位置: 首页 > 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.dtcms.com/a/348534.html

相关文章:

  • Ubuntu 服务器无法 ping 通网站域名的问题解决备忘 ——通常与网络配置有关(DNS解析)
  • 国内使用SSH稳定使用github
  • ROS 与 Ubuntu 版本对应关系
  • 基于Transformer的知识图谱推理模型(KnowFormer)
  • 使用python进行接口测试
  • .net9 解析 jwt 详解
  • Indy HTTP Server 使用 OpenSSL 3.0
  • 采摘机器人设计cad+三维图+设计说明书
  • 学习记录(二十一)-Overleaf中图片文字间隔太大怎么办
  • 【QT入门到晋级】进程间通信(IPC)-共享内存
  • Java数据结构——7.二叉树(总览)
  • 机器学习周报十
  • 从文本树到结构化路径:解析有限元项目架构的自动化之道
  • Rust Web开发指南 第二章(Axum 路由与参数处理)
  • gcc报错解决办法
  • Maxwell学习笔记
  • 如何让FastAPI在百万级任务处理中依然游刃有余?
  • Node【文件+模块化+对象】详讲:
  • OSG库子动态库和插件等文件介绍
  • k8s原理及操作
  • LLM 中评价指标与训练概要介绍
  • AI Prompt 的原理与实战
  • 【LeetCode】分享|如何科学的刷题?
  • 【深度学习】骨干网络(Backbone)
  • 毛选一卷解析
  • VAREdit:深度解读
  • k8s部署,pod管理,控制器,微服务,集群储存,集群网络及调度,集群认证
  • 在Excel和WPS表格中打印时加上行号和列标
  • rosdep无法获取noetic源?
  • 深入解析 std::enable_if:原理、用法与现代 C++ 实践