ตัวแปรสภาพแวดล้อมคืออะไร?

ภาษาการเขียนโปรแกรมคอมพิวเตอร์ทุกภาษาประกอบด้วยตัวแปรและค่าคงที่ซึ่งจัดสรรตำแหน่งหน่วยความจำเฉพาะ ซึ่งมีข้อมูลที่โปรแกรมจะใช้ ค่าคงที่ไม่สามารถเปลี่ยนแปลงได้ แต่ค่าของตัวแปรสามารถเปลี่ยนแปลงได้ ตัวแปรสภาพแวดล้อมคือคู่คีย์/ค่าที่มีการตั้งค่าภายนอกโปรแกรม และการอ้างอิงจะพร้อมใช้งานสำหรับโปรแกรมตลอดเวลา ทั้งคีย์และค่าเป็นสตริง ข้อตกลงสำหรับการตั้งค่าและการใช้ตัวแปรสภาพแวดล้อมจะแตกต่างกันเสมอระหว่างระบบปฏิบัติการและตัวแปลบรรทัดคำสั่ง มีให้บริการทั่วโลกสำหรับทุกแอปพลิเคชันที่ทำงานบนระบบ

ตัวอย่าง


PATH = "C:\\WINDOWS\system32;"
ในที่นี้Pathคือตัวแปรสภาพแวดล้อมที่ตั้งค่าภายนอกโปรแกรม แต่มีให้สำหรับแต่ละโปรแกรมที่ทำงานบน windows

ใช้กรณี

ดังที่เราทราบดีว่าทุกการเปลี่ยนแปลงในโปรแกรมจำเป็นต้องดำเนินการหรือปรับใช้ใหม่กับเซิร์ฟเวอร์ ซึ่งอาจทำให้เกิดผลข้างเคียงที่ไม่พึงประสงค์ในการผลิต ดังนั้น จุดประสงค์หลักของการแนะนำตัวแปรสภาพแวดล้อมคือการจำกัดการดำเนินการและการปรับใช้ครั้งแล้วครั้งเล่า

วิธีรับตัวแปรสภาพแวดล้อมใน Java

มาดูวิธีรับตัวแปรสภาพแวดล้อมในจาวา Java ให้ 2 วิธีแก่เราในการรับตัวแปรสภาพแวดล้อมในโปรแกรม Java
  1. System.getenv()

  2. System.getProperty()

ทีนี้มาดูรายละเอียดทั้งคู่ทีละคน

System.getenv()

เมธอดSystem.getenv()ใช้เพื่อดึงข้อมูลตัวแปรสภาพแวดล้อมทั้งหมด แต่หากมีการระบุชื่อคีย์เฉพาะเป็นพารามิเตอร์ ก็จะดึงค่าของมัน java.lang.System.getenv()ส่งคืนแมปสตริงของตัวแปรสภาพแวดล้อมที่มีอยู่ทั้งหมดเสมอ

ประกาศ


public static String getenv(String name)
ที่นี่ ชื่อ คือพารามิเตอร์ที่ใช้เพื่อระบุคีย์ที่เราต้องการค่า

กลับ

มันจะส่งคืนค่าของคีย์หรือ null หากพารามิเตอร์ที่ระบุไม่เกี่ยวข้องกับคีย์ใดๆ หากพารามิเตอร์ไม่ผ่าน ก็จะส่งคืนคู่คีย์/ค่าที่มีอยู่ทั้งหมด

ตัวอย่าง


import java.util.Map;
public class SystemGetEnvDemo {

   public static void main(String[] args) {

      // getting value for environment variable "PATH"
      System.out.print("System.getenv(PATH) = ");
      System.out.println(System.getenv("PATH"));

      // getting value for environment variable "TEMP" resulting in null
      System.out.print("System.getenv(TEMP) = ");
      System.out.println(System.getenv("TEMP"));
      
      //getting all environment variables using System.getenv()
      Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
   }
}

เอาต์พุต

System.getenv(PATH) = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin System.getenv(TEMP) = null PATH=/usr/local /sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PROGRAMIZ_COMPILER_SERVICE_HOST=10.0.10.151 KUBERNETES_PORT=tcp://10.0.0.1:443 PROGRAMIZ_COMPILER_PORT=tcp://10.0.10.151 :80 TERM=xterm PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP_PROTO=tcp KUBERNETES_SERVICE_HOST=10.0.0.1 PS1= PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP_PORT=80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_8 0_TCP_ADDR=10.0.14.233 PROGRAMIZ_COMPILER_PORT_80_TCP=tcp://10.0.10.151:80 PROGRAMIZ_COMPILER_PORT_80_TCP_PROTO=tcp PWD=/app KUBERNETES_PORT_443_TCP=tcp://10.0.0.1 :443 PROGRAMIZ_COMPILER_PORT_80_TCP_ADDR=10.0.10.151 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT=tcp://10.0.14.233:80 KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1 PROGRAMIZ_COMPILER_WEB_UI_SEVICE _SERVICE_HOST=10.0.14.233 PROGRAMIZ_COMPILER_PORT_80_TCP_PORT=80 KUBERNETES_PORT_443_TCP_PROTO=tcp KUBERNETES_SERVICE_PORT=443 PROGRAMIZ_COMPILER_SERVICE_PORT=80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_PORT_80_TCP=tcp://10.0 14.233:80 PROGRAMIZ_COMPILER_WEB_UI_SEVICE_SERVICE_PORT=80 HOSTNAME=programiz-compiler-deployment-58bfd77477-dtlq8 KUBERNETES_PORT_443_TCP_PORT=443 KUBERNETES_SERVICE_PORT_HTTPS=443 HOME=/home/คอมไพเลอร์
คุณอาจได้ผลลัพธ์ที่แตกต่างกันขึ้นอยู่กับระบบปฏิบัติการของคุณ

System.getProperty()

เรายังสามารถใช้java.lang.System.getProperty()ใน Java เพื่อดึงค่าสำหรับคีย์ที่ระบุซึ่งส่งผ่านเป็นพารามิเตอร์ไปยังเมธอดนี้ วิธีนี้ใช้เพื่อดึงคุณสมบัติของระบบ เช่น ข้อมูลเกี่ยวกับระบบโลคัลและการกำหนดค่า หากตัวแปรสภาพแวดล้อมแสดงเป็นคุณสมบัติของระบบในจาวา ควรใช้System.getProperty()เพื่อรับค่าโดยไม่ขึ้นกับแพลตฟอร์ม ค่าสำหรับคุณสมบัติสามารถเปลี่ยนแปลงได้ที่รันไทม์ แต่ไม่ใช่กรณีที่มีตัวแปรสภาพแวดล้อม

ประกาศ


public String getProperty(String name)
ที่นี่ ชื่อ คือพารามิเตอร์ที่ใช้เพื่อระบุคีย์ที่เราต้องการค่า

กลับ

มันจะคืนค่าของคีย์หรือค่าว่าง

ตัวอย่าง


import java.lang.*; 
import java.util.Properties; 

public class SystemGetPropertyDemo { 
    public static void main(String[] args) 
    { 
        // getting username system property 
       // using System.getProperty in Java
        System.out.println("user.name: " +  System.getProperty("user.name")); 
        // getting property with key home resulting in null
        // calling system.getproperty()
        System.out.println("home: " + System.getProperty("home")); 
        // getting name of Operating System 
        System.out.println("os.name: " + System.getProperty("os.name")); 
    }
}

เอาต์พุต

user.name: คอมไพเลอร์โฮม: null os.name: Linux

บทสรุป

เราหวังว่าตอนนี้คุณคงเข้าใจแล้วว่าอะไรคือและวิธีรับตัวแปรสภาพแวดล้อมใน java วัตถุประสงค์ และวิธีการใช้เพื่อให้ได้มา รู้สึกอิสระที่จะฝึกฝนและกลับมาได้ทุกเมื่อที่คุณต้องการความช่วยเหลือเพิ่มเติม มีความสุขในการเรียนรู้!