본문 바로가기
프로그램/Spring

[Spring] 스프링 설정파일과 소스코드(java, jsp)에서 properties 참조

by 로드러너 2014. 2. 14.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

스프링 설정파일과 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을 이용하는 방법은 정상적으로 동작한다.