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 서버를 의미)
아래와 같은 경우 dev와 prd에 겹치는 property가 있으면 prd가 dev의 값을 덮는다.
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 |
댓글
댓글 쓰기