1. μλ° μμ€ν νλ‘νΌν°(System Property)λ?
μλ°μμ μμ€ν νλ‘νΌν°(System Property)λ μμ€ν μ μμ± κ°μ λνλ΄λ ν€-κ° ννμ λ°μ΄ν°μ΄λ€. μ΄λ¬ν μμ€ν νλ‘νΌν°λ μλ° λ°νμ νκ²½μμ μ¬μ©λλ λ€μν μ 보λ₯Ό μ μ₯νκ³ μλ€. μμ€ν νλ‘νΌν°λ μμ€ν μ μ€μ μ λ°λΌ λμ μΌλ‘ λ³νν μ μμΌλ©°, νλ‘κ·Έλ¨ μ€ν μ€ μ 보λ₯Ό μ½κ±°λ λ³κ²½νλ λ° μ¬μ©λ μ μλ€.
μμ€ν
νλ‘νΌν°λ μλ°μ System
ν΄λμ€λ₯Ό ν΅ν΄ μ κ·Όν μ μμΌλ©°, getProperty(String key)
λ©μλλ₯Ό μ¬μ©νμ¬ νΉμ νλ‘νΌν°μ κ°μ μ»μ μ μλ€. μμ€ν
νλ‘νΌν°λ μ£Όλ‘ μμ€ν
νκ²½κ³Ό κ΄λ ¨λ μ€μ κ°μ μ 곡νλ©°, μλ° μ ν리μΌμ΄μ
μμ νΉμ ν κΈ°λ₯μ ꡬννλ λ° νμ©λ μ μλ€.
μλ₯Ό λ€μ΄, java.version
νλ‘νΌν°λ νμ¬ μ€ν μ€μΈ μλ° κ°μ λ¨Έμ μ λ²μ μ λνλΈλ€. user.home
νλ‘νΌν°λ νμ¬ μ¬μ©μμ ν λλ ν 리 κ²½λ‘λ₯Ό νμνλ©°, file.separator
νλ‘νΌν°λ νμΌ μμ€ν
μμ μ¬μ©λλ κ²½λ‘ κ΅¬λΆ κΈ°νΈλ₯Ό λνλΈλ€. μ΄λ κ² μλ° μμ€ν
νλ‘νΌν°λ λ€μν μ©λλ‘ νμ©λ μ μλ€.
μλ° μμ€ν νλ‘νΌν°λ λ€μν μ 보λ₯Ό μ 곡νλ―λ‘, μ ν리μΌμ΄μ κ°λ°κ³Ό λλ²κΉ μ μ μ©νκ² μ¬μ©λ μ μλ€. νλ‘νΌν° κ°μ μ½μ΄μ μ ν리μΌμ΄μ μ λμμ λμ μΌλ‘ μ‘°μ νκ±°λ, μμ€ν νκ²½μ λ°λΌ λ€λ₯Έ λμμ νλλ‘ μ€μ ν μ μλ€. νλ‘νΌν°λ₯Ό ν΅ν΄ μμ€ν νκ²½μ μ μ°νκ² λ€λ£° μ μλ μλ°μ μ₯μ μ μ΅λν νμ©ν μ μλ€.
2. System.getProperty() λ©μλ μκ°
System.getProperty(String key)
λ μ§μ λ ν€μ ν΄λΉνλ μμ€ν
νλ‘νΌν°μ κ°μ λ°ννλ μλ°μ λ©μλμ΄λ€. μ΄ λ©μλλ key
맀κ°λ³μλ‘ μμ€ν
νλ‘νΌν°μ μ΄λ¦μ μ λ¬λ°μ κ·Έμ ν΄λΉνλ κ°μ λ°ννλ€. λ§μ½ ν΄λΉνλ νλ‘νΌν°κ° μμ κ²½μ° null
μ λ°ννλ€.
λ©μλμ μ¬μ©λ²μ λ€μκ³Ό κ°λ€:
public static String getProperty(String key)
μμ λ©μλλ₯Ό νΈμΆνλ©΄ μμ€ν
νλ‘νΌν° μ€μμ key
μ ν΄λΉνλ κ°μ λ°ννλ€. μλ₯Ό λ€μ΄, System.getProperty("java.version")
μ νΈμΆνλ©΄ νμ¬ μ€ν μ€μΈ μλ° κ°μ λ¨Έμ μ λ²μ μ λνλ΄λ κ°μ λ°ννλ€.
key
νλΌλ―Έν°μλ λ€μν μμ€ν
νλ‘νΌν°λ₯Ό μ§μ ν μ μλ€. μμ£Ό μ¬μ©λλ μμ€ν
νλ‘νΌν°μ λͺ κ°μ§ μμλ λ€μκ³Ό κ°λ€:
java.version
: νμ¬ μ€ν μ€μΈ μλ° κ°μ λ¨Έμ μ λ²μ user.home
: νμ¬ μ¬μ©μμ ν λλ ν 리 κ²½λ‘file.separator
: νμΌ μμ€ν μμ μ¬μ©λλ κ²½λ‘ κ΅¬λΆ κΈ°νΈ
μμ μμ μΈμλ μμ€ν
νκ²½μ λ°λΌ λ€μν μμ€ν
νλ‘νΌν°λ₯Ό μ¬μ©ν μ μλ€. System.getProperty()
λ©μλλ₯Ό μ΄μ©νλ©΄ μ΄λ¬ν μμ€ν
νλ‘νΌν° κ°μ μμ½κ² μ½μ΄μ¬ μ μλ€.
3. System Propertyμ μ¬μ© μμ
μμ€ν νλ‘νΌν°λ λ€μν μ 보λ₯Ό μ 곡νλ―λ‘, μλ° μ ν리μΌμ΄μ μμ μ μ©νκ² μ¬μ©λ μ μλ€. μλλ λͺ κ°μ§ μμ€ν νλ‘νΌν°μ μ¬μ© μμμ΄λ€.
3.1. μλ° λ²μ νμΈ
String javaVersion = System.getProperty("java.version");
System.out.println("νμ¬ μ€ν μ€μΈ μλ° λ²μ μ " + javaVersion + "μ
λλ€.");
μμ μμ μ½λλ java.version
μμ€ν
νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ νμ¬ μ€ν μ€μΈ μλ° λ²μ μ νμΈνλ μ½λμ΄λ€. μ΄λ₯Ό ν΅ν΄ μ ν리μΌμ΄μ
μ΄ μ€νλλ νκ²½μ μλ° λ²μ μ νμΈν μ μλ€.
3.2. μ¬μ©μ λλ ν 리 κ²½λ‘
String userHome = System.getProperty("user.home");
System.out.println("νμ¬ μ¬μ©μμ ν λλ ν 리 κ²½λ‘λ " + userHome + "μ
λλ€.");
μμ μμ μ½λλ user.home
μμ€ν
νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ νμ¬ μ¬μ©μμ ν λλ ν 리 κ²½λ‘λ₯Ό νμΈνλ μ½λμ΄λ€. μ΄λ₯Ό ν΅ν΄ μ ν리μΌμ΄μ
μμ μ¬μ©μμ ν λλ ν 리μ μ κ·Όν μ μλ€.
3.3. νμΌ κ²½λ‘ κ΅¬λΆ κΈ°νΈ
String fileSeparator = System.getProperty("file.separator");
System.out.println("νμΌ μμ€ν
μμ μ¬μ©λλ κ²½λ‘ κ΅¬λΆ κΈ°νΈλ " + fileSeparator + "μ
λλ€.");
μμ μμ μ½λλ file.separator
μμ€ν
νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ νμΌ μμ€ν
μμ μ¬μ©λλ κ²½λ‘ κ΅¬λΆ κΈ°νΈλ₯Ό νμΈνλ μ½λμ΄λ€. μ΄λ₯Ό ν΅ν΄ μ ν리μΌμ΄μ
μμ μ¬μ©λλ νμΌ κ²½λ‘λ₯Ό μ¬λ°λ₯΄κ² ꡬλΆν μ μλ€.
μμ μμ μΈμλ μμ€ν
νκ²½μ λ°λΌ λ€μν μμ€ν
νλ‘νΌν°λ₯Ό νμ©ν μ μλ€. System.getProperty()
λ©μλλ₯Ό μ΄μ©νμ¬ νμν μμ€ν
νλ‘νΌν° κ°μ μ½μ΄μμ μ ν리μΌμ΄μ
μ λμμ λμ μΌλ‘ μ‘°μ ν μ μλ€.
4. System Propertyμ μ€μ λ°©λ²
μμ€ν νλ‘νΌν°λ μλ° μ ν리μΌμ΄μ μ λμμ μ μ΄νλλ° μ¬μ©λλ κ°λ€μ΄λ€. μλλ μμ€ν νλ‘νΌν°λ₯Ό μ€μ νλ λ€μν λ°©λ²μ λν μ€λͺ μ΄λ€.
4.1. JVM μ΅μ μΌλ‘ μ€μ νκΈ°
κ°μ₯ μΌλ°μ μΈ λ°©λ²μ java
λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ€νν λ JVM μ΅μ
μΌλ‘ μμ€ν
νλ‘νΌν°λ₯Ό μ§μ νλ κ²μ΄λ€. JVM μ΅μ
μ -D
νλκ·Έλ₯Ό μ¬μ©νμ¬ μ€μ λλ€.
λ€μμ java.version
νλ‘νΌν°λ₯Ό 1.8.0_211
κ°μΌλ‘ μ€μ νλ μμμ΄λ€.
java -Djava.version=1.8.0_211 MyApp
μμ λͺ
λ Ήμ΄λ₯Ό μ€ννλ©΄ MyApp
μ ν리μΌμ΄μ
μ΄ μ€νλλ©°, ν΄λΉ μ ν리μΌμ΄μ
μμλ System.getProperty("java.version")
μ νΈμΆνλ©΄ μ€μ ν κ°μΈ 1.8.0_211
μ΄ λ°νλλ€.
4.2. μμ€ μ½λμμ μ§μ μ€μ νκΈ°
μ ν리μΌμ΄μ
μ μμ€ μ½λμμ μ§μ μμ€ν
νλ‘νΌν°λ₯Ό μ€μ ν μλ μλ€. μ΄ κ²½μ° System.setProperty()
λ©μλλ₯Ό μ¬μ©νλ€. setProperty(String key, String value)
λ©μλλ₯Ό νΈμΆνμ¬ μμ€ν
νλ‘νΌν°λ₯Ό μ€μ νλ€.
λ€μμ java.version
νλ‘νΌν°λ₯Ό 1.8.0_211
κ°μΌλ‘ μ€μ νλ μμμ΄λ€.
System.setProperty("java.version", "1.8.0_211");
μμ μ½λλ₯Ό μ ν리μΌμ΄μ
μ μ΄κΈ°ν λ‘μ§ λ±μμ νΈμΆνλ©΄, μ΄ν System.getProperty("java.version")
μ νΈμΆνλ©΄ μ€μ ν κ°μΈ 1.8.0_211
μ΄ λ°νλλ€.
4.3. νΉμ νμΌμμ μ€μ νκΈ°
λλ‘λ μμ€ν νλ‘νΌν°λ₯Ό μ ν리μΌμ΄μ μΈλΆμμ μ€μ νκ³ μΆμ μλ μλ€. μ΄λ₯Ό μν΄ μλ°λ νΉμ νμΌμ μμ€ν νλ‘νΌν°λ₯Ό μ€μ ν μ μλ λ°©λ²μ μ 곡νλ€.
μΌλ°μ μΌλ‘ java.util.Properties
κ°μ²΄λ₯Ό μ¬μ©νμ¬ νλ‘νΌν° νμΌμ μ½κ³ μ€μ νλ€.
νλ‘νΌν° νμΌ μμ (myapp.properties
):
java.version=1.8.0_211
μλ° μ½λλ‘ νλ‘νΌν° νμΌμ μ½κ³ μ€μ νλ μμ:
Properties properties = new Properties();
try (InputStream inputStream = new FileInputStream("myapp.properties")) {
properties.load(inputStream);
for (String key : properties.stringPropertyNames()) {
System.setProperty(key, properties.getProperty(key));
}
} catch (IOException e) {
e.printStackTrace();
}
μμ μ½λλ₯Ό μ€ννλ©΄ myapp.properties
νμΌμμ μ½μ κ°μ μμ€ν
νλ‘νΌν°λ‘ μ€μ νλ€.
μμ λ°©λ²λ€μ μ μ ν μ‘°ν©νμ¬ μμ€ν νλ‘νΌν°λ₯Ό μ€μ νλ©΄, μ ν리μΌμ΄μ μ λμμ μ μ°νκ² μ μ΄ν μ μλ€.
5. μλ° μμ€ν νλ‘νΌν° κ΄λ ¨ μ£Όμμ¬ν
μλ° μμ€ν νλ‘νΌν°λ₯Ό μ¬μ©ν λ μ£Όμν΄μΌ ν λͺ κ°μ§ μ¬νλ€μ΄ μλ€. μλλ μλ° μμ€ν νλ‘νΌν° κ΄λ ¨ μ£Όμμ¬νλ€μ λν μ€λͺ μ΄λ€.
5.1. 보μ μ£Όμ
μμ€ν νλ‘νΌν°λ μ ν리μΌμ΄μ μ λμκ³Ό κ΄λ ¨λ μ€μν κ°μ λ΄κΈ° λλ¬Έμ, 보μμ μ£Όμν΄μΌ νλ€. μμ€ν νλ‘νΌν°μ λ―Όκ°ν μ 보λ₯Ό μ μ₯νλ©΄ μ΄λ₯Ό μ μμ μΌλ‘ νμ©ν μ μλ μνμ΄ μ‘΄μ¬νλ€.
λ°λΌμ, μ ν리μΌμ΄μ μμ μμ€ν νλ‘νΌν°λ₯Ό μ¬μ©ν΄μΌ ν λμλ 보μ μ μ± μ λ°λ₯΄κ³ μ μ ν μνΈν κΈ°μ μ μ μ©νμ¬ νλ‘νΌν° κ°μ 보νΈνλ κ²μ΄ μ’λ€.
5.2. μ½κΈ° μ μ©
μμ€ν νλ‘νΌν°λ JVMμ΄ μ€νλλ μμ€ν νκ²½μ λν μ 보λ₯Ό μ 곡νκΈ° μν΄ μ¬μ©λλ κ°λ€μ΄λ€. λ°λΌμ, μμ€ν νλ‘νΌν°λ μ½κΈ° μ μ©μΌλ‘ κ°μ£Όν΄μΌ νλ€.
μ ν리μΌμ΄μ μμ μμ€ν νλ‘νΌν°λ₯Ό μμ νλ €κ³ μλνλ κ²μ λ°λμ§νμ§ μλ€. μ½κΈ° μ μ©μΌλ‘ μ¬μ©λλ νλ‘νΌν° κ°μ λ³κ²½νλ©΄, JVMμ λμμ΄ μμμΉ λͺ»νκ² λ³κ²½λμ΄ μ ν리μΌμ΄μ μ μμ μ±μ λ¬Έμ κ° μκΈΈ μ μλ€.
5.3. κ°λ³μ± μ£Όμ
μμ€ν νλ‘νΌν°λ JVMμ΄ μ€νλλ μμ€ν νκ²½μ λ°λΌ λμ μΌλ‘ λ³κ²½λ μ μλ€. λ°λΌμ, μ ν리μΌμ΄μ μμ μμ€ν νλ‘νΌν° κ°μ μ½μ΄μ μ¬μ©ν λμλ κ°λ³μ±μ κ³ λ €ν΄μΌ νλ€.
μλ₯Ό λ€μ΄, ν λ² μ½μ΄μ¨ μμ€ν νλ‘νΌν° κ°μ μΊμνκ³ μ¬μ¬μ©νλ κ²½μ°, νλ‘νΌν° κ°μ΄ λμ μΌλ‘ λ³κ²½λλ κ²½μ° λ³κ²½λ κ°μ λ°μνμ§ λͺ»νλ λ¬Έμ κ° λ°μν μ μλ€. λ°λΌμ, μμ€ν νλ‘νΌν° κ°μ μμ£Ό μ½μ΄μ¨λ€λ©΄ λ§€λ² μ§μ μ½μ΄μ€λ κ²μ κ³ λ €ν΄μΌ νλ€.
5.4. κΈ°λ³Έκ° μ€μ
μμ€ν
νλ‘νΌν°λ μ€ν νκ²½μ λ°λΌ μ‘΄μ¬νμ§ μμ μλ μλ€. μ΄ κ²½μ°, System.getProperty()
λ©μλλ null
μ λ°ννλ€. λ°λΌμ, μμ€ν
νλ‘νΌν° κ°μ μ¬μ©ν λμλ κΈ°λ³Έκ°μ μ€μ νλ κ²μ΄ μ’λ€.
String javaVersion = System.getProperty("java.version", "Unknown");
μμ μμ μ½λλ java.version
μμ€ν
νλ‘νΌν° κ°μ μ½μ΄μ€λ, κ°μ΄ μ‘΄μ¬νμ§ μμ κ²½μ° κΈ°λ³Έκ°μΌλ‘ "Unknown"μ μ¬μ©νλ μμμ΄λ€. κΈ°λ³Έκ°μ μ€μ νμ¬ νλ‘νΌν° κ°μ΄ μ‘΄μ¬νμ§ μμλ μμ νκ² μ ν리μΌμ΄μ
μ μ€νν μ μλ€.
μλ° μμ€ν νλ‘νΌν°λ₯Ό μ¬μ©ν λ μμ μ£Όμμ¬νλ€μ μΌλμ λλ©΄μ μμ νκ³ ν¨μ¨μ μΌλ‘ μ ν리μΌμ΄μ μ κ°λ°ν μ μλ€.
λκΈ