美文网首页
Springboot命令注入属性[--]和[-D]的区别

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

作者: 放开好人 | 来源:发表于2021-07-15 10:57 被阅读0次
    之前在用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]的区别

          本文链接:https://www.haomeiwen.com/subject/jzuppltx.html