[Spring property 두가지 설정 방법]

1. context:property-placeholder 태그 사용

<context:property-placeholder location="classpath:프로퍼티파일명"/>

* 빈팩토리 후처리기로써 빈 설정 메타정보 모두 준비됐을 때 메타정보 자체를 조작 : 빈 설정이 끝난 이후 ${} 표현을 찾아 해당하는 프로퍼티로 치환해준다는 의미인 듯

* ${} 사용 : "${프로퍼티key}" 와 같이 사용

* @Value annotation 에서도 사용이 가능 : @Value("${프로퍼티key}")

 

2. bean 으로 등록

<util:properties id="빈아이디" location="classpath:프로퍼티파일명" />

* Spring 3.0 이상부터 지원

* 프로퍼티 파일 내용을 Properties 타입의 빈으로 생성

* spEL(Spring Expression Language) 사용 : #{빈아이디['프로퍼티Key']} 와 같이 사용

* @Value annotation 에서도 사용이 가능 : @Value("빈아이디['프로퍼티Key']")

 

[Ex]

1. Comm.properties 파일 생성 (resources/sample/properties/Comm.properties)

api.server.url="https://sample.api.com"
db.driverClass="sampleDriverClass"
db.url="sampleDBUrl"
db.username="sampleDBUrl"
db.password="sampleDBUrl"

2. property 설정(Bean 주입, context.xml 설정)

<context:property-placeholder location="classpath:sample/properties/Comm.properties" />
혹은
<util:properties id="properties" location="classpath:sample/properties/Comm.properties" />

※서버 환경별(로컬, 개발, 운영 등) property 파일을 동적으로 다르게 사용하고자 할 경우 이곳 참고

 

3. 스프링설정파일 (~context.xml) 에서의 사용

context:property-placeholder 태그 사용한 property 설정시 :

1
2
3
4
5
6
<bean id=""dataSource" class="~">
   <property name="driverClass" value="${db.driverClass}" />
   <property name="url" value="${db.url}" />
   <property name="username" value="${db.username}" />
   <property name="password" value="${db.password}" />
</bean>
cs

util:properties 와 같이 bean 으로 property 설정시 :

1
2
3
4
5
6
7
<bean id=""dataSource" class="~">
   <property name="driverClass" value="#{properties['db.driverClass']}" />
   <property name="url" value="#{properties['db.url']}" />
   <property name="username" value="#{properties['db.username']}" />
   <property name="password" value="#{properties['db.password']}" />
</bean>
 
cs

 

4. 소스에서의 사용

context:property-placeholder 태그 사용한 property 사용시 :

@Value("${api.server.url}") 

private String apiServerUrl;

 

util:properties 와 같이 bean 으로 property 사용시 :

@Value("#{properties['api.server.url']}") 

private String apiServerUrl;

 

 

[ property 의 형변환 ]

property 값은 기본적으로 String 형태의 Text로 선언 및 사용되는게 default.

String 이 아닌 다른 기타 자료형을 바꿔서 사용해야하는 경우

1. PropertyEditor : 스프링이 default로 해당 에디터를 사용하여 property를 형변환 함 

: boolean, short, int, long, double 등의 기본 자료형 및 Boolean, Short, Integer, Long, Double 등의 wrapper클래스의 오브젝트 타입도 지원

ex) @Value("1.2") double num;

: array 도 사용 가능

ex) @value("1,2,3") int[] arr;

 

* PropertyEditor interface 직접구현하여 사용자가 직접 정의한 형태로 값을 리턴하도록 사용 가능 (Thread safe X)

 

2. ConversionService : 스프링 3.0부터 지원 (Thread safe O)

bean 으로 선언하여 사용.

 

 

공부를 더 해봐야 하겠지만 지금 당장 String 및 기본자료형 정도로만 property 사용하면 되므로

나중에 필요할 때 공부하는걸로..

 

참고 :

토비의스프링 3.1 (도서)

https://whiteship.tistory.com/2563

반응형

+ Recent posts