IT/Spring

Spring Boot - using external yaml file (spring.config.import)

최고영회 2021. 3. 2. 11:02
728x90
반응형
SMALL

spring boot 에서 application.properties 나 application.yaml 파일 이용 시

합리적인 값 재정의를 허용하도록 설계된 매우 특정한 PropertySource 순서를 사용하며

속성의 우선 순위는 아래와 같다.

1. Command line arguments.

2. JNDI attributes from java:comp/env.

3. Java System properties (System.getProperties()).

4. OS environment variables.

5. A RandomValuePropertySource that only has properties in random.*.

6. Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)

7. Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)

8. Application properties outside of your packaged jar (application.properties and YAML variants).

9. Application properties packaged inside your jar (application.properties and YAML variants).

10. @PropertySource annotations on your @Configuration classes.

11. Default properties (specified using SpringApplication.setDefaultProperties).

이전 프로젝트에서는 @PropertySource 를 이용해서

@PropertySource(value = {"file:"+Constant.YAML_DEV, "file:"+Constant.YAML_PROD}, ignoreResourceNotFound = true, factory = YamlPropertySourceFactory.class)

와 같이 설정하여 처리 했었다.

개발 시 application.yaml의 spring.prifiles.active 를 dev mode 로 하고 YAML_DEV는 PC 의 특정 Path를 지정했다. ignoreResourceNotFound 옵션을 통해 해당 파일이 없으면 다음 파일인 YAML_PROD 를 찾아 설정되도록 처리 했다.

이번에 진행하고 있는 Project 에서는 더 쉬운 방법으로 spring.config.import 를 사용하기로 했다.

application 의 resources 에 위치하고 있는 application.yaml 을 default 로 하되

설정값이 변경될 수 있는 항목들에 대해서는 외부 .yaml 파일을 이용하기로 하고

개발 시 에는 C:/dev/application.yaml 파일을 참고하고 운영은 /application_path/conf/application.yaml 을

이용하도록 하려면 아래와 같이 설정하면 된다.

spring:
  profiles: 
    active: prod 
  config: 
    import: 
      - optional:file:/yhkim/.conf/file_analyzer.yaml 
      - optional:file:C://dev/file_analyzer.yaml
728x90
반응형
LIST