<util:properties/> 와 Spring EL 로 값 가져오기


예제로 맨든 이클립스 프로젝트(maven project)

SpringProperty.zip




XML 설정

<?xml version=" 1.0"="" encoding="UTF-8" ?=""><beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/util 
		http://www.springframework.org/schema/util/spring-util-3.2.xsd">

	....

	<util:properties id="prop" location="classpath:config/properties/sample.properties"/>

	....

</beans>





sample.properties

sample.prop1 = test

# 우쭈쭈~
sample.prop2 = \uc6b0\ucb48\ucb48~






Spring EL 로 값 가져오기(SampleBean.java)

package com.tistory.stove99;

import java.util.Properties;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class SampleBean {
	// Spring EL 로 값 가져오기
	// Spring EL 이기 때문에 자유롭게 메소드 호출도 가능함. String 의 concat 메소드 호출
	@Value("#{prop['sample.prop1'].concat(' abc')}") private String value1;
	@Value("#{prop['sample.prop2']}") private String value2;
	
	
	
	// util:properties 로 생성된 빈은 java.util.Properties 의 인스턴스이기 때문에
	// 요렇게 Autowired 해서 쓸 수 있다.
	@Autowired Properties prop;
	
	
	
	
	public String val(String key){
		return prop.getProperty(key);
	}
	
	public String toString(){
		return String.format("value1 : %s, value2 : %s", value1, value2);
	}
}

Spring EL에 대해서 더 알아보고 싶으면 요 사이트를 참고하면 친절하게 알려줌.

http://static.springsource.org/spring/docs/3.0.x/reference/expressions.html






Test(SampleTest.java)

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.tistory.stove99.SampleBean;


public class SampleTest {
	public static void main(String[] args) {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("config/spring/*-context.xml");
		
		SampleBean sample = context.getBean(SampleBean.class);
		
		// test
		System.out.println(sample.val("sample.prop1"));
		
		// value1 : test abc, value2 : 우쭈쭈~
		System.out.println(sample);
	}
}