SpringBoot启动命令行参数【-D】和【--】的区别
【-D】和【--】两种写法都可以在命令行传入参数,实现覆盖 application.properties
中的配置项,不过写法有些不同
【-D】虚拟机参数
以运行jar包为例,写法为:
# 参数写法为:-Dproperty=value java -Dserver.port=1234 -jar app.jar
【-D】要放到 -jar 前面,否则参数无效
在idea中通过虚拟机选项这里传递:
代码中可以通过系统属性 System.getProperties()
获取
public static void main(String[] args) { SpringApplication.run(App.class, args); // 1234 System.out.println(System.getProperty("server.port")); System.out.println("*****启动成功*****"); }
【--】命令行参数
从main方法的参数传入,springboot会对这种参数进行自动解析
写法为:
java -jar app.jar --server.port=4321
【--】参数不能放到前面,否则会报错
在idea中这么传递:
代码中是通过main
函数参数 String[] args
传入
再通过SpringApplication.run(App.class, args)
传入springboot
进行解析的
可以通过实现 EnvironmentAware接口
注入环境对象,可以读取命令行参数
@SpringBootApplication public class App implements EnvironmentAware { static Environment environment; public static void main(String[] args) { SpringApplication.run(App.class, args); // 1234 System.out.println(System.getProperty("server.port")); // 4321 同名的命令行参数覆盖虚拟机参数 System.out.println(environment.getProperty("server.port")); System.out.println(environment.getProperty("user.dir")); System.out.println("*****启动成功*****"); } // 注入环境对象 @Override public void setEnvironment(Environment environment) { App.environment = environment; } }
命令行参数与虚拟机参数同名的,以命令行参数优先
分类:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~