application.yml의 Profile에 대한 테스트 이것저것
Profile에 대한 개념이 있다는 가정하에 진행하겠다. 모른다면 !링크를 참고하자.
application-{프로파일}.yml
은 특정 Profile에 맞는 yml 파일이다. Profile을 따로 지정하지 않고 실행하게 된다면 application.yml
이 실행이 된다. 그렇다면 이때의 Profile은 무엇으로 실행되는 것일까??
Baeldung 싸이트 피셜로 'default' Profile 이라고 한다.
그렇다면 Profile을 지정하지 않고 돌렸는데 application.yml
이 없다면 어떻게 될까??
//application.yml
person:
name: defaultBepoz
age: 100
//application-bepoz.yml
person:
name: bepozBepoz
weight: 1000
yml 파일은 다음과 같은 2 종류를 세팅해놨고 일단 application.yml
을 지운채 진행해보겠다.
yml 파일에서 person.name을 읽어오는 config 클래스를 추가하고 밑의 테스트를 돌려보았다.
결과는 예상한대로 나왔다. yml 파일을 제대로 못읽어와서 빈 생성에서 실패한 것을 확인할 수가 있었다.application.yml
를 추가하고 돌리니 에러 없이 제대로 실행이 되는 것 또한 확인할 수가 있었다.
이번에는 config 클래스를 다음과 같이 변경해보았다.
테스트 코드는 다음과 같이 변경했다.
결과는 위에서 나왔던 동일한 에러가 나왔다. application.yml
에는 weight
에 대한 정보가 없기 때문에 빈 생성에 문제가 생기는 것이다. 그렇다면 테스트의 프로파일을 bepoz로 준다면 어떻게 될까??
테스트가 성공적으로 통과했다! application-bepoz.yml
에는 분명 age
에 대한 정보가 없는데도 말이다.
이를 통해, application.yml
은 profile이 default
인데, 정말 default 처럼 작동한다는 것을 확인할 수가 있었다.application-bepoz.yml
에서 값을 찾지 못하자 application.yml
에서 값을 뒤져서 갖고오는 것이다. 정말 Default 그 자체다!!
모든 Profile에 공통적으로 들어가는 내용은 따로 profile yml에 넣지말고 application.yml
에 넣어줘도 의도한대로 작동할 것이다.
'Spring' 카테고리의 다른 글
[JPA] OSIV와 Spring Framework에서의 OSIV에 대해서 (2) | 2021.11.13 |
---|---|
[Spring] @Async를 이용한 비동기 처리에 대해 (0) | 2021.11.01 |
[JPA] JPA CascadeType.PERSIST 에 대한 개인적인 궁금증 해결 (0) | 2021.09.19 |
[JPA] @PrePersist 에 대해 (0) | 2021.08.03 |
[Spring] Rest Docs 도입 중 맞닥뜨린 asciiDoctor에 대한 에러 (0) | 2021.07.18 |