JAVA/Spring
Spring - XML 빈 설정 중 properties 사용하기
realizers
2021. 10. 25. 00:20
728x90
반응형
spring 설정 xml에 다음과 같은 구문을 추가합니다.
1. 외부 설정 프로퍼티
// jdbc.properties 파일
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://dbserver:3306/test
jdbc.username=test
jdbc.password=1234
// files.properties 파일
#### File Path ####
file.path=C:\\
2. PropertyPlaceholderConfigurer 클래스 사용하는 경우
- 주의점은 두개 이상의 PropertyPlaceholderConfigurer 빈을 설정하면 안된다는 점입니다.
- 이 경우 첫번째의 PropertyPlaceholderConfigurer의 설정이 적용되며, 두번째 설정 내용은 적용되지 않습니다. => 각각의 PropertyPlaceholderConfigurer 빈은 서로 프로퍼티 정보를 공유하지 않기 때문입니다.
- 하나의 프로퍼티 파일만 등록한다면 <list> 요소는 필요없게 됩니다.
- 빈 설정이 끝난 이후 ${} 표현을 찾아 해당하는 프로퍼티로 치환해준다는 의미입니다.
- 프로퍼티 파일에 포함된 프로퍼티의 값은 ${jdbc.driver} 형식으로 사용할 수 있습니다. 즉 dataSource의 빈 내용중 ${jdbc.driver}는 프로퍼티 파일의 jdbc.driver 값으로 대체됩니다.
<bean class="org.springframwork.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:META-INF/jdbc.properties</value><!-- 프로퍼티 파일 경로 지정 -->
<value>classpath:META-INF/files.properties</value><!-- 프로퍼티 파일 경로 지정 -->
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<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>
3. <context:property-placeholder> 요소를 사용한 외부 설정 프로퍼티 사용하는 경우
- <context:property-placeholder>는 외부 프로퍼티 파일을 로딩하도록 설정할 수 있습니다.
<!--두 개이상 프로퍼티 사용할 수 있다.(콤마로 구분하여)-->
<context-property-placeholder location="classpath:META-INF/jdbc.properties, classpath:META-INF/files.properties"/>
<!--확장자가 .properties 인 파일을 모두 등록 -->
<context-property-placeholder location="classpath:META-INF/*.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<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>
4. <util:properties> 요소를 사용한 외부 설정 프로퍼티 사용하는 경우
- Spring 3.0 이상부터 지원합니다.
- 프로퍼티 파일 내용을 Properties 타입의 빈으로 생성합니다.
- #{빈아이디['프로퍼티Key']} 처럼 사용합니다.
- <context:property-placeholder> 요소는 확장자가 .properties인 파일을 모두 등록할 수 있었지만 <util:properties>는 하나씩만 등록할 수 있습니다.
<util:properties id="properties" location="classpath:META-INF/jdbc.properties" />
<util:properties id="properties" location="classpath:META-INF/files.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="#{properties['jdbc.driver']}" />
<property name="url" value="#{properties['jdbc.url']}" />
<property name="username" value="#{properties['jdbc.username']}" />
<property name="password" value="#{properties['jdbc.password']}" />
</bean>
728x90
반응형