• 在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开发

  • 相关阅读:
    vue3探索——5分钟快速上手大菠萝pinia
    (四)笔记.net core学习之应用配置、多环境配置、日志与路由
    Python 数据分析与挖掘(一)
    【简单教程】利用Net2FTP构建免费个人网盘,实现便捷的文件管理
    读书笔记—《如何阅读一本书》
    鲜花在线销售平台的设计与实现/鲜花商城/网上花店管理系统
    【GAMES101】作业7 Path Tracing 关于Renderer::Render()中相机射线方向dir的疑惑&解答
    邮件网关&CAC2.0防御并行:提升高校师生邮箱账号的全面安全
    Postman工具简介
    【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
  • 原文地址:https://blog.csdn.net/java_0000/article/details/125527356