시스템 분석을 하다 보면 properties 파일에 관련 값들이 들어가 있는 것을 종종 봤는데 이것을 어떻게 불러와서 사용되는지 따로 생각해 본 적이 없었다. 그래서 이번에 Java에서 제공하는 java.util.Properties 클래스에 대해 알아봤다.
참고
https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html
Properties (Java Platform SE 8 )
Reads a property list (key and element pairs) from the input character stream in a simple line-oriented format. Properties are processed in terms of lines. There are two kinds of line, natural lines and logical lines. A natural line is defined as a line of
docs.oracle.com
개념적인 내용보다는 활용법에 대해 정리하였다.
java.util.Properties 클래스는 자바 프로그램에서 속성(property)을 관리하기 위한 유용한 도구를 제공하는 클래스다. 이 클래스는 키(key)와 값(value) 쌍으로 구성된 속성 집합을 나타내며, 주로 구성 파일이나 속성 파일과 같은 설정 정보를 다루는 데 사용된다.
사용하는 메소드는 다음과 같다.
● getProperty(String key)
주어진 키에 대한 값을 반환.
● load(InputStream inStream)
입력 스트림에서 속성을 로드하여 Properties 객체에 추가. 주로 파일로부터 설정 정보를 읽어올 때 사용.
● setProperty(String key, String value)
주어진 키와 값으로 속성을 설정.
● getProperty(String key, String defaultValue)
주어진 키에 대한 값을 반환하며, 만약 해당 키가 존재하지 않으면 기본값으로 주어진 값을 반환.
● store(OutputStream out, String comments)
출력 스트림에 속성을 저장. 주로 설정 정보를 파일에 저장할 때 사용.
● stringPropertyNames()
속성 집합에 포함된 모든 키를 문자열 형태로 반환.
● list(PrintStream out)
속성을 출력 스트림에 키-값 쌍의 형태로 출력합니다.
● clear()
속성 집합을 비웁니다.
보통 값이 들어있는 properties 파일에서 해당값을 불러오는 기능만 사용을 해봐서 나머지 메소드들에 대해서는 사용 해본적은 없다.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
/**
* Properties 클래스 활용해보기
*/
public class MyProperties {
public static void main(String[] args) {
// Properties 객체 생성
Properties myProperties = new Properties();
// 값 세팅하기
myProperties.setProperty("database.driver", "org.mariadb.jdbc.Driver");
myProperties.setProperty("database.url", "jdbc:mysql://localhost:3306/mydatabase");
myProperties.setProperty("database.username", "kdkhelloworld");
myProperties.setProperty("database.password", "password123");
// test.properties 파일 생성 및 쓰기
File myFile = new File("C:\\Users\\NC627\\Desktop\\test.properties");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myFile);
myProperties.store(fos, "database config");
fos.close();
} catch (Exception e) {
System.out.println("파일 생성 실패!");
}
// 생성한 test.properties 파일에서 값 읽어오기
FileInputStream fis = null;
try {
fis = new FileInputStream(myFile);
myProperties.load(fis);
fis.close();
} catch (Exception e) {
System.out.println("파일 읽기 실패!");
}
String driver = myProperties.getProperty("database.driver");
String url = myProperties.getProperty("database.url");
String userName = myProperties.getProperty("database.username");
String password = myProperties.getProperty("database.password");
System.out.println(driver);
System.out.println(url);
System.out.println(userName);
System.out.println(password);
}
}
간단하게 (try, path 등) 예제 코드를 작성하였다.
주석에도 적혀 있지만 코드의 흐름은 다음과 같다.
ㆍProperties 객체 생성
ㆍ생성한 객체에 값 세팅 후 파일 생성
ㆍ생성한 PROPERTIES 파일(.properties) 읽어오기
ㆍ읽어온 PROPERTIES 파일에서 원하는 값 가져오기
사용한 메소드는 다음과 같다.
ㆍ getProerties
ㆍ setProperties
ㆍ load
ㆍ store
store 메소드의 경우 2번째 파라미터가 뭔지 이해가 안 됐는데 파일을 보면 저런 식으로 주석이 달린다.
'01. Java > 02. etc' 카테고리의 다른 글
[Java]Apache POI (0) | 2023.12.01 |
---|---|
java.util.Base64 (0) | 2023.11.22 |
java.util.UUID (0) | 2023.11.21 |
java.lang.System (0) | 2023.11.20 |