Spring properties 사용하기

1. 프러퍼티 파일 생성

먼저 아래와 같이 properties 파일을 만들어 주자

/WEB-INF/spring/properties/aabooSite-local.properties


다음 문장을 추가해보자

db.url = 127.0.0.1
db.username = aaboo
db.password = !@!dsfsdf23432131a

value1 = 12345
value2 = abcdef


2. 환경설정 구성(이클립스에서)

1) servlet-context.xml 에서 아래 내용 추가

<!-- 프로퍼티 파일 설정 -->
<beans:bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<beans:property name="locations">
		<beans:list>
			<beans:value>/WEB-INF/spring/properties/aabooSite-${spring.profiles.active}.properties</beans:value>
		</beans:list>
	</beans:property>
</beans:bean>

<!-- 위의 설정을 통해 아래와 같이 사용되어질 수 있음 -->
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
	<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
	<beans:property name="url" value="${db.url}" />
	<beans:property name="username" value="${db.username}" />
	<beans:property name="password" value="${db.password}" />
</beans:bean>

2) 네임스페이스에 context 추가 

servlet-context.xml 파일에서 하단에 Namespaces 탭으로 들어가서 context 체크하고 저장


3. 실행환경에서 spring.profiles.active 추가

Server 창에서 해당 서비스 더블 클릭
> Open launch configuration 클릭
> (x)= Arguments 탭에서 하단 VM arguments:에 아래 문장 추가

-Dsrping.profiles.active=local


4. JAVA 파일에서 사용 (com.aaboo.mySite.test.Test.java로 가정)

import org.springframework.beans.factory.annotation.Value;

@Value(“${value1}”) private int value1; //12345
@Value(“${value2}”) private string value2; //abcdef

이와 같이 사용하면 정상적으로 properties 파일의 값을 사용할 수 있다.

단, 아래처럼 static으로 적용하는 경우 값이 대입되지 않는 문제가 있을 수 있다.

@Value(“value1”) private static int value1; //null
@Value(“value2”) private static string value2; //null

그럴 경우, 해결방법

변수는 static 선언을 해주고, @Value() set함수를 사용하면 값이 대입된다.

private static int value1;
private static string value2;

@Value("${value1}")
private void setValue1(int value1){ 
	this.value1 = value1;
}

@Value("${value2}")
private void setValue2(String value2){ 
	this.value2 = value2;
}

logger.info(String.valueOf(value1));
logger.info(value2); 

만약 위의 경우에도 null이 나온다면
servlet-context.xml 에서 위의 java 파일을 bean으로 선언해 주어야 한다.

<beans:bean id="test" class="com.aaboo.mySite.test.Test"/>

댓글 남기기