使用系统属性以及系统属性的用途

时间:2015-07-23 08:23:09

标签: java properties system system-properties

我见过代码:

public static final boolean SUPRESS_CHECK = "true".equals(System.getProperty("sdp.authz.disable", "false"));
  1. 这个属性有什么用?
  2. 为什么我们必须使用系统属性设置并获取?
  3. 什么时候我们应该使用系统属性。

3 个答案:

答案 0 :(得分:0)

这些系统属性是JVM范围的参数。如果我举个例子,你可以在启动VM时传递它们:     java -Dsdp.authz.disable = true -jar yourJar.jar

sdp.authz.disable 的默认值为 false ,除非您将此参数传递给 true

这允许您拥有相同的代码,但根据上下文(如开发或制作)更改应用的行为

答案 1 :(得分:0)

  1. java.lang.System.getProperties()方法确定当前系统属性。 getProperty(String)方法使用的当前系统属性集将作为Properties对象返回

  2. 如果没有当前系统属性集,则首先创建并初始化一组系统属性。

  3. 示例:

    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    
    /* check connection */
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }
    
    $query = "SELECT name FROM User";
    
    if ($result = $mysqli->query($query)) {
    
        /* fetch associative array */
        while ($row = $result->fetch_assoc()) {
            echo $row['name'];
        }
    
        /* free result set */
        $result->free();
    }
    

答案 2 :(得分:0)

根据java docs系统属性被广泛用于维护应用程序的配置。我们可以使用此属性在运行时更改应用程序的行为。

有关详细信息,请参阅以下链接:https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

系统属性的用法:

假设我们的应用程序有不同的数据库服务器,如QA,STAGING和PROD。所有这三个数据库的数据库连接字符串都不同。因此,有两种方法可以设置数据库的配置。

  1. 更改应用程序部署环境代码中的配置。(重复迭代过程,每次更改应用程序的数据库服务器时都必须更改配置)
  2. 在每个环境的属性文件中保留单独的配置,并根据需要使用的数据库获取配置。 即了解更好的保存文件,如config_qa.properties,config_staging.properties,config_production.properties 每个文件分别包含qa,staging和production数据库服务器的数据库配置。
  3. 如果我们使用第二点,则每次将代码部署到新的数据库环境时,都不需要更改代码中的属性。这使我们可以灵活地在不编译代码的情况下对配置进行更改。