jvm 选项
Java启动参数共分为三类;
其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
例:
java -Xms700m -Xmx1024m -jar app.jar
java -jar -Xms5866m -Xmx5866m -Xss256k -Xloggc:/home/work/spring-boot/logs/gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause starter.jar
程序参数
在main 方法中获取到的参数
public static void main(String[] args) { }
java -jar app.jar a b c
java -jar app.jar --server.port=8081 --spring.profiles.active=dev
环境变量
-Dxxxx是java运行参数的语法 作用是配置一些环境变量,具体有哪些参数,参数有什么效果,和你用的实际环境、项目架构都有关 对,让程序知道log_path代表什么,具体程序怎么用,那是程序的事了
System.getProperty(“propertyName”) 比如你的就是System.getProperty(“log_path”)就可以拿到了 java的main函数都具有String[] 参数。这个参数可以通过-d来传递。 log_path这个会被存放在System.getProperty()中, Property 是继承 hashtable的。可以通过System.getProperty(“log_path”)取得。
例:
java -DconfigurePath=hello -jar app.jar
使用System.getProperty(“configurePath”) 就行获取了
spring-boot 环境下的的传参说明
选项参数
非选项参数
系统参数
选项参数
java -jar xxx.jar --server.port=8081
非选项参数
java -jar xxx.jar abc def
系统参数
java -jar -Dserver.port=8081 xxx.jar
选项参数和非选项参数均可以通过ApplicationArguments接口获取,具体获取方法直接在使用参数的类中注入该接口即可。
@Service
public class UserService {
@Resource
private ApplicationArguments arguments;
}
系统参数和选项参数,可以直接通过@Value在类中获取
系统参数可以通过java.lang.System提供的方法获取:
String systemServerPort = System.getProperty("server.port");
总的分[系统参数]与[选项参数]:系统的在 app.jar 之前传入,而 选项是放在 app.jar 之后听