[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 (도서)
'back > Spring Framework' 카테고리의 다른 글
[Spring Fw] 스프링 빈의 스코프 그리고 멤버변수 (0) | 2019.12.18 |
---|---|
[Spring Fw] component-scan vs annotation-driven vs annotation-config (0) | 2019.12.06 |
[Spring fw] Transaction 설정 및 주의사항 : 예상치 못한 롤백이 이루어 지는 경우, 롤백이 되지 않는 경우 확인해봐야 할 것 (1) | 2019.08.04 |
[Spring Fw] POI(Excel lib) 를 사용하여 다운로드하기 (7) | 2019.07.15 |
스프링프레임워크 log4j2 설정 : Spring Framework + log4j 2 + slf4j + jboss/wildfly(ver 9) (0) | 2019.05.10 |