关于IDEA与Jar包启动项目添加环境变量参数注意点
IDEA可以给yml配置文件添加参数,也可以给JVM添加参数。通常情况下,命令行参数的优先级 高于 VM系统属性
在启动SpringBoot项目时候,通过 -D
或 --
添加参数,都可以直接覆盖 yml
或 properties
配置文件中的同名配置,如果不存在则相当于添加了一个配置。
命令行中如何添加JVM环境变量和yml环境变量
-D和--可以混着用,但是需要注意的是,-D参数放在jar包前面,--参数jar包后面,如下所示:
经过测试,命令行中参数重复:命令行参数优先级 > VM环境变量优先级 ,因为命令行参数在后面,会将VM参数覆盖,如下所示:
1 | java -Dserver.port=8002 -Djasypt.encryptor.password=9bcf8cad5bb65c3f -jar oracle-demo-0.0.1-SNAPSHOT.jar --server.port=8001 |
多个-D和--参数中间使用空格进行分割,如下所示:
1 | java -Dserver.port=8002 -Duser.name=zhangsan -Duser.age=23 -Djasypt.encryptor.password=9bcf8cad5bb65c3f -jar oracle-demo-0.0.1-SNAPSHOT.jar --server.port=8001 --user.sex=男 |
获取JVM环境变量和命令行参数的值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /** * @author zhangzhixi * @version 1.0 * @description * @date 2023-12-23 15:56 */ @RequestMapping( "/test" ) @RestController public class TestController { /** * 获取配置文件中的值 */ @Value( "${user.sex}" ) private String userSex; // 男 /** * 通过@Value注解获取配置文件中的值 * 既能获取JVM启动参数,也能获取配置文件中的值 */ @Value( "${user.name}" ) private String userName; // zhangsan /** * 如果JVM启动参数和配置文件中的值重复,优先获取JVM启动参数的值 */ @Value( "${server.port}" ) private String serverPort; // 8001 @GetMapping( "/config" ) public String testConfig() { Map<String, String> configProperties = new LinkedHashMap<>(); // 获取JVM启动参数的值 configProperties.put( "server.port" , System.getProperty( "server.port" )); configProperties.put( "user.name" , System.getProperty( "user.name" )); configProperties.put( "user.age" , System.getProperty( "user.age" )); // 获取配置文件中的值 configProperties.put( "user.sex" , userSex); return JSON.toJSONString(configProperties); } } |
1 2 3 4 5 6 | { "server.port" : "8002" , "user.name" : "zhangsan" , "user.age" : "23" , "user.sex" : "男" } |
IDEA中如何添加JVM环境变量和yml环境变量
经过测试,在IDEA中添加配置,VM环境变量优先级 > 命令行参数优先级
下面设置的yml环境变量--server.port就不会生效,此程序启动将会使用JVM指定的8002作为项目端口
标签:
IDEA
, SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-09-05 Ajax