当前位置: 代码迷 >> java >> 系统属性的使用以及系统属性的用途
  详细解决方案

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

热度:92   发布时间:2023-08-02 11:05:25.0

我看过代码:

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

这些系统属性是JVM范围的参数。 如果以您的示例为例,您可以在启动VM时通过它们:java -Dsdp.authz.disable = true -jar yourJar.jar

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

这使您可以使用相同的代码,但可以根据上下文(例如开发人员或生产人员)更改应用程序的行为

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

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

例:

      public class SystemDemo {

         public static void main(String[] args) {

        // this will list the current system properties
        Properties p = System.getProperties();
        p.list(System.out);
      }
    } 

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

请参阅以下链接以获取更多信息: :

系统属性的用法:

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

  1. 更改将在其中部署应用程序的环境的代码中的配置。(重复过程,每次更改应用程序的数据库服务器时都必须更改配置)
  2. 在每种环境的属性文件中并根据需要使用的数据库保留单独的配置,以获取配置。 即,为了更好地了解config_qa.properties,config_staging.properties,config_production.properties之类的文件,每个文件分别包含qa,登台和生产数据库服务器的数据库配置。

如果使用第二点,则无需在每次将代码部署到新的数据库环境时都更改代码中的属性。 这为我们提供了灵活性,甚至可以在不编译代码的情况下对配置进行更改。

  相关解决方案