티스토리 뷰

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
반응형