른록노트
[Java] Properties 사용법 본문
@ 방법
1. Spring에서 적용하여 사용방법
servlet-context.xml
1) PropertyPlaceholderConfigurer를 이용한 properties 파일 읽어오기
location 프로퍼티의 값에는 콤마나 공백으로구분된 프로퍼티 파일 목록이 오며, 프로퍼티 파일에 포함된 프로퍼티의 값은 '${프로퍼티 이름}' 형식으로 사용할 수 있습니다. 예제를 보면 config.properties 안에 있는 db.driver의 값을 xml 파일에서 '${db.driver}' 형태로 사용할 수 있습니다.
<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<beans:property name="location" value="/WEB-INF/config/config.properties"/>
<beans:property name="fileEncoding" value="UTF-8" />
</beans:bean>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<beans:property name="driverClassName" value="${db.driver}"/>
<beans:property name="url" value="${db.url}">
<beans:property name="username" value="${db.username}"/>
<beans:property name="password" value="${db.password}"/>
</beans:bean>
Java Source
@value 어노테이션 선언으로 값을 가져올 수 있습니다.
@Controller
public class HomeController {
@Value("${file.path}")
private String file_Path;
@Value("${db.username}")
private String dbUser;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
model.addAttribute("filePath", file_Path);
model.addAttribute("dbUser", dbUser);
return "home";
}
}
JSP Page
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> FilePath is ${filePath} </P>
<P> dbUser is ${dbUser} </P>
</body>
</html>
2) context:property-placeholder를 이용한 properties 파일 읽어오기
먼저 context:property-placeholder을 사용하기 위해서는 servlet-context.xml에서 설정이 필요합니다.
<context:property-placeholder location="classpath:config/*"/>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<beans:property name="driverClassName" value="${db.driver}"/>
<beans:property name="url" value="${db.url}">
<beans:property name="username" value="${db.username}"/>
<beans:property name="password" value="${db.password}"/>
</beans:bean>
3) <util:properties/> 와 Spring EL을 이용한 properties 파일 읽어오기
먼저 servlet-context.xml의 네임스페이스 시트로 들어가 util 체크박스를 클릭합니다.
<util:properties id="dbinfo" location="classpath:/config/config.properties"/>
<util:properties id="fileinfo" location="classpath:/config/config.properties"/>
Java Source
@value 어노테이션 선언으로 값을 가져올 수 있습니다.
${"'#id명'[프로퍼티안에 저장된 값]"}
@Controller
public class HomeController {
@Value("#{fileinfo['file.path']}")
private String file_Path;
@Value("#{dbinfo['db.username']}")
private String dbUser;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
model.addAttribute("filePath", file_Path);
model.addAttribute("dbUser", dbUser);
return "home";
}
}
2. PropUtil 클래스를 만들어 사용하는 방법
* 파일 경로를 가져오는 방법 3가지
1. 프로그램 코드에 상수로 프로터피 파일의 경로를 둔다.
2. java 실행 옵션으로 세팅해서 프로그램에서 사용한다.
3. ClassLoader를 사용하여 가져온다. (전 이 방식 선택)
package core.util;
import java.net.URL;
import java.util.Properties;
/**
*
* @author eunbok
*/
public class PropUtil {
public static String getProp(String key, String Default) {
String value = "";
try {
ClassLoader cl;
cl = Thread.currentThread().getContextClassLoader();
if (cl == null) {
cl = ClassLoader.getSystemClassLoader();
}
URL url = cl.getResource("server.properties");
Properties props = new Properties();
props.load(new java.io.BufferedInputStream(url.openStream()));
value = props.getProperty(key, Default).trim();
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
}
참고사이트
http://ktko.tistory.com/entry/Spring-properties-%EC%9D%BD%EC%96%B4%EC%98%A4%EA%B8%B0
http://jbongsu.blogspot.com/2012/10/java-java-properties.html