Spring Boot Property 로딩 및 적용 순서

property 파일 로딩 순서 간단 정리

1. (local)      application
2. (local)      application-{profile}
3. (server)    application
4. (server)   {spring.application.name}
5. (server)   {spring.application.name}-{profile}

로딩 순서는 1 -> 5, 같은 값이 있을 때는 번호가 클 수록 winner
(local은 application을 뜻하고, server는 spring cloud config 서버를 의미)


Multiple Active Profile을 줄 때

dev, prd의 모든 property를 다 가져 오지만, 공통 값이 있을 경우 뒤에 것이 앞의 값을 덮는다.
아래와 같은 경우 dev와 prd에 겹치는 property가 있으면 prd가 dev의 값을 덮는다.
-Dspring.profiles.active=dev,prd


Config 서버 사용시 주의할 우선 순위

bootstrap에 아래와 같이 정의 되어 있고 active profile을 p1, p2로 주게 되면, 로컬은 application-p1, application-p2를 모두 로드 하고 같은 property가 있을 경우 p2가 p1의 값을 덮어 쓴다. 그러나 config 서버의 경우는 마지막에 선언된 active profile p2만 영향을 주어, 선언된 http://2.2.2.2:8888로부터 {application.name}-cp2.yml만 가져와 사용하고 공통 값이 있을 경우 로컬 property를 덮어 쓴다.(즉, cp1은 무시)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
...

---
spring:
  profiles: p1
  cloud:
    config:
      uri: http://1.1.1.1:8888
      profile: cp1
---
spring:
  profiles: p2
  cloud:
    config:
      uri: http://2.2.2.2:8888
      profile: cp2

댓글

이 블로그의 인기 게시물

[Protocol] WIEGAND 통신

Orange for Oracle에서 한글 깨짐 해결책

[UI] GNB·LNB·SNB·FNB 용어 설명