ตัวแปรสภาพแวดล้อมคืออะไร?
ภาษาการเขียนโปรแกรมคอมพิวเตอร์ทุกภาษาประกอบด้วยตัวแปรและค่าคงที่ซึ่งจัดสรรตำแหน่งหน่วยความจำเฉพาะ ซึ่งมีข้อมูลที่โปรแกรมจะใช้ ค่าคงที่ไม่สามารถเปลี่ยนแปลงได้ แต่ค่าของตัวแปรสามารถเปลี่ยนแปลงได้ ตัวแปรสภาพแวดล้อมคือคู่คีย์/ค่าที่มีการตั้งค่าภายนอกโปรแกรม และการอ้างอิงจะพร้อมใช้งานสำหรับโปรแกรมตลอดเวลา ทั้งคีย์และค่าเป็นสตริง ข้อตกลงสำหรับการตั้งค่าและการใช้ตัวแปรสภาพแวดล้อมจะแตกต่างกันเสมอระหว่างระบบปฏิบัติการและตัวแปลบรรทัดคำสั่ง มีให้บริการทั่วโลกสำหรับทุกแอปพลิเคชันที่ทำงานบนระบบตัวอย่าง
PATH = "C:\\WINDOWS\system32;"
ในที่นี้Pathคือตัวแปรสภาพแวดล้อมที่ตั้งค่าภายนอกโปรแกรม แต่มีให้สำหรับแต่ละโปรแกรมที่ทำงานบน windows
ใช้กรณี
ดังที่เราทราบดีว่าทุกการเปลี่ยนแปลงในโปรแกรมจำเป็นต้องดำเนินการหรือปรับใช้ใหม่กับเซิร์ฟเวอร์ ซึ่งอาจทำให้เกิดผลข้างเคียงที่ไม่พึงประสงค์ในการผลิต ดังนั้น จุดประสงค์หลักของการแนะนำตัวแปรสภาพแวดล้อมคือการจำกัดการดำเนินการและการปรับใช้ครั้งแล้วครั้งเล่าวิธีรับตัวแปรสภาพแวดล้อมใน Java
มาดูวิธีรับตัวแปรสภาพแวดล้อมในจาวา Java ให้ 2 วิธีแก่เราในการรับตัวแปรสภาพแวดล้อมในโปรแกรม Java-
System.getenv()
-
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
GO TO FULL VERSION