Springboot命令注入属性[--]和[-D]的区别

之前在用shell中的启动命令
nohup java -jar ./$appName -Xmx512m -Xms512m -Xss512k -XX:MaxDirectMemorySize=1G -XX:+UseG1GC 
-XX:MaxGCPauseMillis=200 -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=40 -XX:+PrintGCDateStamps 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+HeapDumpOnOutOfMemoryError 
-XX:+DisableExplicitGC -XX:-OmitStackTraceInFastThrow -XX:+PrintCommandLineFlags -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
-Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 --apollo.meta=http://10.7.xxx.1x2:7080 > ./server.out 2>&1 &

问题:-jar后面设置-D参数是无效的。

-D 系统属性注入

Java,启动jar 命令:
java [ options ] -jar file.jar [ arguments ]
Java HotSpot VMs针对,当前运行时环境,提供了一套调准的options

-Dproperty=value
Sets a system property value.
 #如果值是包含空格的字符串,则必须用双引号将该字符串括起来:
If value is a string that contains spaces, then you must enclose the string in double quotation marks:
java -Dmydir="some string" SomeClass

特别注意:-D命令,需要在jar包之前。不然会出现像我一开始说的问题。

-- 属性赋值
image.png
测试总结
  1. --属性赋值若在-jar之前,则脚本错误,无法启动。
    日志肯定不会打印,因为系统起不来。可以在最后设置转向输出: > ./server.out 2>&1 &
#无法识别的选项
Unrecognized option: --spring.profiles.active=sit
#错误:无法创建Java虚拟机。
Error: Could not create the Java Virtual Machine.
#错误:发生致命异常。程序将退出。
Error: A fatal exception has occurred. Program will exit.
  1. --属性赋值为linux的shell内部命令,朋友说的,暂未证实。目前测试来看,--只能放在-jar后,对相应属性赋值。
  2. -D为Java内部命令,必须放在-jar前,在其后则无效。
  3. 目前来看,既然-D和--都能实现属性注入,最好还是使用spring自带的-D。
  4. 最终启动命令修改如下,(为了方便展示,中间有回车,若使用记得去除)。
    • 一般来讲,启动命令注入的参数基本为不变参数,类似于UTF-8这种格式设置。
    • -Dapollo这种ip配置变更可能性大,最好还是放在jar包同级目录config文件夹下。
nohup java  -Xmx512m -Xms512m -Xss512k -XX:MaxDirectMemorySize=1G -XX:+UseG1GC 
-XX:MaxGCPauseMillis=200 -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=40 -XX:+PrintGCDateStamps 
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -XX:+HeapDumpOnOutOfMemoryError 
-XX:+DisableExplicitGC -XX:-OmitStackTraceInFastThrow -XX:+PrintCommandLineFlags -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
-Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dapollo.meta=http://10.7.xxx.1x2:7080 -jar ./$appName > ./server.out 2>&1 &

你可能感兴趣的:(Springboot命令注入属性[--]和[-D]的区别)