728x90

내 카톡 프로필

 

Spring 프로필 별로 다르게 설정되는 프로퍼티들이 있다.

예를 들어 Local, Develope 프로필 별로 DB 설정을 다르게 해주어야 한다거나, 프로젝트 내 변수값을 다르게 설정해야 하는 상황이 있다.

 

이럴 때 프로필 별 외부설정 파일에서 프로퍼티를 불러와야 하는데

 

각각 다른 프로퍼티 값을 가지고 있는 local.config, dev.config 라는 외부 프로퍼티 파일이 있다고 가정할 때

 

해당 두 가지 파일 중에, 프로젝트 실행 시 적용된 프로필에 맞는 파일을 선택하고 해당 파일 내 프로퍼티를 사용하는 방법을 알아보자.

 

1.PropertyPlaceholderConfigurer 빈 등록

  - dispatcher-servlet에서 해당 클래스를 빈으로 등록하고 불러오고 싶은 파일 경로를 주입해주자.

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>/WEB-INF/config/${spring.profiles.active}.config</value>
        </list>
    </property>
</bean>

    => 말그대로 빈으로 등록함과 동시에 원하는 외부 프로퍼티 설정 파일 경로를 주입해주었다.

    => 현재 상황은 적용된 프로필에 해당하는 외부 설정 파일을 사용해야 하는 상황이다.

    => 현재 적용된 프로필 네임은 spring.profiles.active를 통해 불러올 수 있다.

    => 이렇게 하면 스프링 컨테이너에 파일이 등록돼서, 어느 곳에서나 해당 파일의 프로퍼티를 사용할 수 있다.

 

2. 파일 내 정의되어 있는 프로퍼티 사용

  - 이제 파일 내에 있는 프로퍼티를 사용해야할 차례이다. 파일 내에 app.file.path 라는 프로퍼티를 사용한다 가정하겠다.

# dev.config

app.file.path=C:\\image\\path\\
@Value("${app.file.path}")
    private String myVariable;

    => 첫 번째 코드가 dev.config 즉, 설정 프로퍼티 파일이고, 두 번째 코드가 해당 파일 내 app.file.path를 사용하는 코드.

    => 해당 파일이 빈으로 등록 되었기 때문에, @Value 어노테이션을 이용하여 컨테이너에서 해당 프로퍼티를 가져올 수 있다.

    => 현재 적용된 프로필이 dev 라면 myVariable 변수에는 "C:\\image\\path\\" 가 들어있을 것.

728x90