-
[JAVA/WEB] Properties 파일로 중요 정보 관리하기IT, 프로그래밍/Java 2019. 1. 28. 09:37
어플리케이션을 만들다 보면 중요한 정보를 사용해야 할 때가 있다.
그런데 이걸 소스내에 하드코딩해서 관리하기엔 아래와 같은 문제가 있다.
1. 런타임 중에 변경할 수 없다.
즉 정보가 하나라도 변경되면 서버를 껐다가 켜야한다.
2. 유지보수가 힘들다.
ENUM이나 상수로 정의해서 사용해도 되지만, 결국은 소스코드를 뒤져야 하며, 유지보수에 악영향을 미친다.
3.보안 처리가 힘들다
소스코드 자체는 암호화 하기가 힘들다. 파일로 따로 빼서 관리하면 IO 과정에서 암/복호화 할 수 있으므로 보안에 유리하다.
1234db.driverName=com.mysql.jdbc.Driverdb.url=jdbc:mysql://localhost:3306/mydbdb.id=myiddb.pwd=mypwdcs JDBC 접속 정보를 관리하는 info.properties 라는 파일을 만들자.
Key = Value 로 작성하면 되고, 콤마를 안써도 개행을 하면 다른 정보라고 인식한다.
이 파일을 배포하는 서버에서 관리하려면 특정 경로에 파일을 생성하고 이 경로를 상수로 관리하면 되고,
프로젝트 파일 밑에 놔두려면, WEB-INF 아래 classes 폴더를 생성해서 그 안에 넣어두면 된다.
불러올 때는, ClassLoader를 통해 WEB-INF classes 폴더 밑을 탐색할 수 있다.
1234567891011121314private static final String PROPERTIES_FILE = "info.properties";private Properties props;.....props = new Properties();try {props.load(this.getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE));} catch (IOException e) {System.out.println("Properties File Load Fail!");e.printStackTrace();}cs classes 폴더 밑에 파일을 두고 이름을 주면 ClassLoader가 알아서 찾아온다.
만약 classes 폴더 밑에 말고 WEB-INF 하위의 다른 곳에 두고 싶다면 ServletContext로 접근해야 한다.
12345678910111213141516171819public String getDbName() {return props.getProperty("db.driverName");}public String getDbUrl() {return props.getProperty("db.url");}public String getDbId() {return props.getProperty("db.id");}public String getDbPwd() {return props.getProperty("db.pwd");}cs properties 파일에 있는 정보에 접근하려면 파일에 적어두었던 키 값으로 접근하면 된다.
'IT, 프로그래밍 > Java' 카테고리의 다른 글
인텔리제이에서 JDK 버전이 안 맞을때 해결방법 (0) 2019.02.12 [JAVA] Servlet Build Path 설정 (0) 2019.01.24 [JAVA] 자바와 셀레니움(Selenium)으로 웹 페이지 가지고 놀기 (5) 2019.01.18 [Java] javap를 사용하여 바이트코드를 확인해보자 (0) 2019.01.09 [JAVA] 채팅 만들기 완전 분석 ( 에코 서버 - 클라이언트 ) (3) 2019.01.09