ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java | Properties Class
    JAVA/JAVA 2020. 2. 12. 17:28

    Properties Class

    java.util.Properties
    Map 인터페이스를 구현하며 Hashtable 컬렉션을 상속하는 클래스

    .properties 파일을 처리하는 기능을 가진 컬렉션

    • Secure Coding을 할 때 사용할 수 있는 방법 중 하나
    • 컬렉션이므로 import를 해주어야 사용 가능
    • 외부로부터 환경설정 파일을 불러오는 기능이 내장되어 있음
      ex) DB연동: ~.conf or .properties(주로 디폴트)

    ※ Secure Coding: 외부로부터의 해킹 소지가 있는 소스 코드의 보안을 높이는 작업


    Properties Method

    메소드 설명
    void load(InputStream inStream) 해당 스트림으로부터 key=value 프러퍼티 리스트를 읽어 들임
    일반적인 환경설정 파일 및 영문으로 작성된 파일을 불러올 때 사용
    void list(PrintStream out) 프로퍼티 리스트를 해당 output 스트림으로 출력
    String getProperty(String key) 프로퍼티 리스트 중 key에 해당하는 value를 문자열로 반환
    Object setProperty(String key, String value) Hashtable 메소드 호출, key에 해당하는 값을 value로 설정
    실제 파일의 값은 수정되지 않음
    void store(OutputStream out, String comments) load() 메소드로 스트림이 연결되어 있는 Properties 테이블에 프로퍼티 리스트를 덮어씀
    comments는 주석을 뜻하며 내용이 없으면 null 작성

    ※ 프로퍼티 리스트에 한글이 포함되어 있는 경우에는 Input/OutputStream 대신 Reader/Writer 스트림 사용


    .properties

    Properties 클래스로 불러오는 파일

    properties list를 가지고 있음

    • 확장자는 .properties로 작성
    • ' # ' : 한줄 주석
    • Key=Value 형식으로 작성
      띄어쓰기를 하지 않는 것이 좋음
    # 작성 형식
    KEY1=VALUE1
    KEY2=VALUE2

    예제

    ex1.properties_before

    Properties 클래스의 load() 메소드로 불러올 .properties 파일

    #key value
    b=imsi
    a=test

    PropTest.java

    package j200212;
    
    import java.io.*;
    import java.util.Properties;
    
    public class PropTest {
    
        public static void main(String[] args) {
            // Properties 객체 생성
            Properties pro = new Properties();
    
            try {
                // 파일 불러오기, 입출력이므로 예외 처리 수행
                FileInputStream fis = new FileInputStream(
                        "C:\\webtest\\3.java\\JAVA-Study\\200212\\src\\j200212\\ex1.properties");
    
                // fis 스트림으로부터 key=value 프로퍼티 리스트를 읽어 들임
                pro.load(fis);
    
                // 프로퍼티 리스트 출력
                System.out.println(pro);    // {b=imsi, a=test}
    
                // 각 key에 해당하는 value 출력
                System.out.println(pro.getProperty("a"));    // test
                System.out.println(pro.getProperty("b"));    // imsi
    
                // a key에 해당하는 값을 "merong"으로 설정
                pro.setProperty("a", "merong");
                System.out.println(pro.getProperty("a"));    // merong
    
                // 변경된 프로퍼티 리스트를 파일에 덮어 씀
                pro.store(new FileOutputStream("C:\\webtest\\3.java\\JAVA-Study\\200212\\src\\j200212\\ex1.properties"),
                        "This is a comment.");
    
            } catch (Exception e) {
                System.out.println(e);
            }
    
        }
    
    }
    

    ex1.properties_after

    setProperty(key, value) 메소드와 store(outputStream, comments) 메소드로 수정된 파일

    수정된 시간이 자동으로 생성됨

    #This is a comment.
    #Wed Feb 12 12:47:13 KST 2020
    b=imsi
    a=merong

    민감한 정보를 따로 파일로 만들어서 필요에 따라 관리할 수 있도록 하는 Properties 클래스에 대해 알아보았습니다.

    Properties 클래스는 소스 코드의 보안을 높이는 여러 가지 방법 중 하나이기 때문에

    알아두면 port 번호나 ip 주소, 사용자 id, pwd 등의 정보를 보다 안전하게 관리할 수 있을 것입니다.

    물론 Properties 클래스만으로 완전한 보안이 이루어지는 것은 아니며

    암호화와 같은 다른 종류의 시큐어 코딩도 병행해서 사용해야 한다고 합니다.

     

    'JAVA > JAVA' 카테고리의 다른 글

    Java | JDBC 예제 with Oracle  (0) 2020.02.13
    Java | JDBC with Oracle  (0) 2020.02.13
    Java | Socket & Thread 채팅 프로그램 만들기  (1) 2020.02.12
    Java | Network (2) ServerSoket & Socket  (0) 2020.02.11
    Java | Network (1) InetAddress & URL  (0) 2020.02.11

    댓글

Designed by Tistory.