스프링 설정파일과 java, jsp 소스 코드 상에서 properties 파일의 값을 참조하는 방법 중에서 <context:property-placeholder> 를 이용하는 방법과 SpEL 을 이용하는 방법에 대해서 정리하겠다.
1. <context:property-placeholder>
1) 서블릿 컨텍스트 파일 설정
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<context:property-placeholder location="/WEB-INF/*.properties" />
2) 사용법
- xml 안에서 사용
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
-- java 코드 내에서 사용
@Value("${jdbc.url}")
private String dbURL;
2. SpEL 이용
1) 서블릿 컨텍스트 파일 설정
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<util:properties id="db" location="/WEB-INF/database.properties" />
<!-- SpEL 을 이용시에는 파일명으로 와일드문자(*)를 사용할 수 없다. 파일명을 다 입력해 주어야 한다. -->
2) 사용법
-- xml 안에서 사용
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="#{db['jdbc.driver']}" />
<property name="url" value="#{db['jdbc.url']}" />
<property name="username" value="#{db['jdbc.username']}" />
<property name="password" value="#{jdbc.password']}" />
</bean>
-- java 코드 내에서 사용
@Value("#{db['jdbc.url']}")
private String dbURL;
* 톰캣7.0, jdk1.7, spring 3.1 에서 테스트 해 보니 <context:property-placeholder/> 이용하는 방법은 파일을 읽어들여서 키 값을 참조하는 시점에서 참조하지 못하는 오류가 일부 발생한다. 전체를 참조하지 못하는 것이 아니고 일부 키만 ㅡㅡ; 아직 원인을 찾아 해결하지는 몯했다.
SpEL을 이용하는 방법은 정상적으로 동작한다.