欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

通过System.getProperty配置JVM系统属性

程序员文章站 2022-03-08 09:57:32
很多时候我们需要在项目中读取外部属性文件,用到了system.getproperty("")方法。这个方法需要配置jvm系统属性,那么如何配置呢?那就是使用java -d 配置系统属性。使用格式是:j...

很多时候我们需要在项目中读取外部属性文件,用到了system.getproperty("")方法。这个方法需要配置jvm系统属性,那么如何配置呢?

那就是使用java -d 配置系统属性。
使用格式是:java -dkey=value

比如新建一个测试类,如下:

public class test {
  public static void main(string[] args){
   system.out.println(system.getproperty("configurepath"));
  }
}

这段代码直接执行的话,会输出null

接下来需要配置configurepath属性了,有两种方法。

第一种方法是在启动tomcat的时候配置:

比如在myeclipse中,选中这个项目,然后在工具栏中选择"run-->run confgurations“,然后在对话框的右边选择"arguments,然后在vm arguments中输入-dconfigurepath=hello。如下图:

通过System.getProperty配置JVM系统属性

然后就会在控制台输出:hello

第二种方法是在执行java命令的时候配置:

将之前的测试类导出为一个jar包,再控制台使用命令执行:java -dconfigurepath=hello -jar test.jar

也会得到hello

通过System.getProperty配置JVM系统属性

java -d 配置系统属性

使用案例

其实,在不知不觉中我们已经在使用-d的参数项,比如用下面参数来配置文件编码:

-dfile.encoding=utf-8

再比如,用以下参数来配置dubbo的选项:

java -ddubbo.reference.com.foo.barservice.check=false
java -ddubbo.reference.check=false
java -ddubbo.consumer.check=false
java -ddubbo.registry.check=false

功能解析

-d=value

官网解释:

set a system property value. if value is
a string that contains spaces, you must enclose the string in double quotes:

在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机上的应用程序可用:
system.getproperty("属性名")得到value的值。

如果value中有空格,则需要用双引号将该值括起来,如:-dname=”kazaf f”。

该参数通常用于设置系统级全局变量值,如配置文件路径,保证该属性在程序中任何地方都可访问。

注意事项

(1)需要设置的是jvm参数而不是program参数;

(2)使用此参数的参数优先级最高,会覆盖项目中配置的此项;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。