• 在Java中访问并配置环境变量


    如何在 Java 中访问环境变量

            最常见的方法之一是使用System.getenv(),它接受一个可选String参数。根据是否String传递了参数,方法会返回不同的值。具体来说:

            如果 aString被传递并且它匹配内部环境中的一个键Map,那么它的值被返回。如果没有找到匹配的键,null则返回。如果未String传递参数,则返回包含所有环境变量及其值的只读值。Map 的键是环境变量名称,其值是值。java.util.Map

            请记住,不同的平台以不同的方式运行,例如,在 UNIX、Linux 和 macOS 上,环境变量区分大小写,而在 Microsoft Windows上则不是。

            下面,您可以看到如何使用该方法检索 LinuxSHELL环境变量(包含用户的 shell)的示例。

    1. package com.settermjd.twilio.envvars;
    2. public class Main {
    3. public static void main(String[] args) {
    4. System.out.println(
    5. String.format("The current shell is: %s.", System.getenv("SHELL"))
    6. );
    7. }
    8. }

            如果要提供默认值,请System.genenv()按以下方式调用:

    System.getenv().getOrDefault("SHELL", "/bin/bash")

    如何设置环境变量

    UNIX、Linux 和 macOS

            在 UNIX、Linux 和 macOS 上,可以通过三种核心方式设置环境变量。

            可用于当前会话和所有子进程

            您可以使用内置的导出命令初始化环境变量,以便它们可用于当前会话,包括当前会话和在当前会话中启动的任何进程,以及在当前会话中启动的任何进程,如示例中所示以下。

    export USER_ID=1

            以这种方式设置环境变量不是永久性的。如果要永久设置环境变量,则需要在系统范围的启动文件/etc/profile或用户特定的启动文件之一中设置它,即~/.bash_profile、~/.bash_login , 和~/.profile。

    可用于当前会话

            您可以初始化一个环境变量,使其可用于当前会话,但不能用于任何子进程,如下例所示,不使用该export命令。

    USER_ID=1

    可用于特定进程

            最后,您可以初始化一个环境变量,使其仅对特定进程可用。当只有该过程需要变量时,这很有帮助。在启动所需的过程时,您可以按照下面的示例对其进行初始化。

    USER_ID=1 retrieveUserDetails

    微软Windows

            在 Microsoft Windows 中设置环境变量略有不同。您可以通过控制面板设置它们,也可以在命令提示符或 PowerShell 控制台中设置它们。下面有后两者的例子。

    1. # Set USER_ID in the Windows Command Prompt
    2. set USER_ID=1
    3. # Set USER_ID in the Windows PowerShell console
    4. $Env:USER_ID = 1

    使用 .env 文件

            虽然以这种方式设置环境变量可能非常有效,但它也会很快变得很麻烦。例如,通过在操作系统的 shell 中设置它们,没有应用程序需要的变量的具体列表,也没有关于变量的用途或它必须是什么数据类型的信息。

            鉴于此,除其他原因外,The 12-Factor App建议将配置与代码严格分离。通过使用.env (dotenv) 文件,这种做法很快在整个开发者社区中流行起来。这些是存储键/值对列表的纯文本文件,定义了应用程序工作所需的环境变量,如下例所示。

    1. USER_ID=1
    2. TWILIO_AUTH_TOKEN=1234567890987654321

            为了简化项目的开始,出现了一种更常见的做法,即在项目中包含一个.env.example文件,该文件包含所有键,但没有它们的值。当新开发人员开始开发应用程序时,他们会复制该文件,将其命名为.env并为适用于其本地开发环境的每个键设置值。

    读取 .env 文件

            假设上面的示例是我们项目的.env文件,我们可以使用诸如dotenv-java之类的包来使变量对我们的应用程序可用。

            如果你在 Kotlin 中开发,你可以使用dotenv-kotlin。

            您可以在下面的代码示例中看到使用包的示例。

    1. package com.settermjd.twilio.envvars;
    2. import io.github.cdimascio.dotenv.Dotenv;
    3. import io.github.cdimascio.dotenv.DotenvException;
    4. public class Main {
    5. public static void main(String[] args) {
    6. Dotenv dotenv = null;
    7. dotenv = Dotenv.configure().load();
    8. System.out.println(String.format(
    9. "Hello World. Shell is: %s. Name is: %s",
    10. System.getenv("SHELL"),
    11. dotenv.get("NAME")
    12. ));
    13. }
    14. }

            代码初始化一个新Dotenv对象 dotenv,并调用读取位于项目根目录中的.envDotenv.configure().load()中的环境变量。之后,用于检索传递给它的对象的值。如果未找到匹配的键,则该方法返回。dotenv.get()Stringnull

    Java学习视频

    Java基础:

    Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

    Java项目:

    【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

    【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

  • 相关阅读:
    Unity3D学习笔记8——GPU实例化(3)
    raft算法的自我理解
    【K8S系列】深入解析k8s网络插件—Calico
    20、matlab信号波形生成:狄利克雷函数、高斯脉冲和高斯脉冲序列
    链动2+1模式:如何快速吸引用户并提高用户留存率?
    2022.1版本idea 安装教程
    vue学习之列表渲染
    风光储一体化能源中心 | 图扑数字孪生
    基因组科学数据的安全管理与应用
    【uniapp微信小程序+springBoot(binarywang)
  • 原文地址:https://blog.csdn.net/java_0000/article/details/125527356