springframework

Properties 파일을 읽어들여 사용하기.

Jungsoomin :) 2020. 8. 10. 00:26

일단, PropertyPlaceholderConfigurer 객체를 Bean 으로 등록 후,

  1. location메서드에 properties 파일의 경로를 준다. ("file:/" or "classpath:/" ) 등.

  2. fileEncoding 메서드에는 UTF-8 인코딩을 사용.

<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <beans:property name="location" value="/WEB-INF/config/config.properties"/>
        <beans:property name="fileEncoding" value="UTF-8" />
</beans:bean>

여러개의 프로퍼티 파일을 등록 시킬 경우.

<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <beans:property name="locations">
            <beans:list>    
                <beans:value>classpath:/config/config.properties</beans:value>
                <beans:value>classpath:/config/config2.properties</beans:value>
            </beans:list>
        </beans:property>
</beans:bean>

프로퍼티 파일의  키 값( Properties 파일은 Map<String, String> 이라는 을 기억한다. )  을 ${} 기호안에 넣어 사용한다. 

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
	<beans:property name="driverClassName" value="${db.driver}"/> 
	<beans:property name="url" value="${db.url}">
	<beans:property name="username" value="${db.username}"/>
	<beans:property name="password" value="${db.password}"/> 
</beans:bean>

 


JavaConfig 에서는 @Bean 으로 스프링이 관리하는 Bean객체로 등록한다. 

  반드시, static 으로 선언한다.  PropertySourcesPlaceholderConfigurer 는 특수한 목적의 Bean 이기 때문에, 정적 메서드로 선언해야만 동작한다.

 

setLocations() 메서드는 가변인자이기 떄문에, 여러개의 경로를 주어도 무방하다.

@Bean
public static PropertySourcesPlaceholderConfigurer properties(){
	PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    configurer.setDefaultEncoding("UTF-8");
    configurer.setLocations(
     new ClassPathResources("db.properties"), new FileSystemResources("info.properties")
    );
    return configurer;
}

 

이후 사용은 @Value 에노테이션을 사용한다. 속성 값으로는 ${} 플레이스 홀더를 이용하여 Properties 파일의 키 값 을 준다. 

@Configuration
public class test {
	@Value("${db.driver}")
    private String driver;
    ...
    
}

<context:property-placeholder> 태그를 이용해서 읽어올 수도 있다고 한다. location 속성은 properties 파일의 경로이다.

 

context: 가 붙었으므로, NameSpace 탭에서 context를 체크해야 사용이 가능하다.

<context:property-placeholder location="classpath:config/*"/>

이후 사용은 JSP, @Configuration( 설정클래스 ) , @Bean( 스프링 관리 객체 ) setter 메서드 , 인스턴스 변수 등, 사용이 가능하다.