0. 환경파일 분리의 필요성
스프링부트 3.1.5 환경에서 JPA를 공부하기 위해 맨 밑바닥부터 시작하고 있다.
기존에 일일이 파일을 만들고 설정해줘야 했던 스프링 레거시와 maven을 활용했기 때문에
스프링부트 환경이 참 어떤면에선 원클릭으로 파일 자체도 줄어들어 편하기도하고, 아직은 생소하다.
아무튼 환경을 잡을 줄 알아야 이후 개발, 배포까지 수월하기 때문에
제일 먼저 이뤄지고 알아야 할 개념이라 생각들어 이번 기회에 환경분리 방법부터 알아보고자 한다.
실제로 상용에선 로컬환경, 개발환경, 운영환경 등으로 각각 값이 달라지기 때문에
설정 파일을 profile 화 하여 쪼개고 변화 된 환경에서 필요시 해당 profile을 불러와 쓰는 것이 기본이다.
1. application.propertice와 application.yml(yaml) 차이
-공통점
둘다 key:value 타입의 설정파일을 의미하며 스프링부트에서 필요하는 설정들을 명세 할 수 있다.
-차이점
propertice 파일은 처음부터 명세해야 되기 때문에 불필요한 중복 구문이 눈에 많이 보인다.
yml 파일은 계층구조를 지원하여 불필요한 중복 구문이 많이 줄어든다.
가독성은 개인의 선호도에 따라 다르므로 취향껏 골라 쓰면 된다.
-주의사항
스프링부트에서 환경설정 파일임을 인식을 시키려면 파일명 앞에 무조건 'application'은 빼놓지 않고 적혀있어야한다.
어플리케이션이 빠져있으면, 설정파일인 것을 인식하지 못한다.
그리고, application.properties와 application.yml 파일이 같이 공존하고 있다면, 파일 인식의 우선순위가 properties에 있어 yml 설정이 무시된다. (정확히는 덮어 씌워진다.)
2. springboot 2.4 이전의 환경설정
위와 같이 하나의 파일 내에서 --- 로 구분하여 각 다른 파일에서 읽어오는 것 처럼 모든 정보를 기록 할 수 있었다.
원칙상으론 2.4 이전 버전에서도 환경마다 각각의 파일로 쪼개는 것이 맞긴한데 편의성을 고려하여 가능했었다.
3. springboot 2.4 이후의 환경설정
요약을 하자면, 문법이 조금 바뀌고 2.4버전 기준으로 파일 하나로 관리 된 것을 여러개로 쪼개게 되었다.
메인이 되는 application.yml 파일에선 환경 설정 파일들을 그룹으로 묶어주고, 각 어느 profile이 어느 profile 별칭으로 찾아갈지를 작성하고 끝난다.
그 후, active.on-profile에서 각 설정 파일마다 profile 별칭을 지정해주고 그 하위로 필요할 세팅 정보를 기록하면,
메인 설정파일에서 active에 명시된 설정 파일을 찾아 그 설정을 사용한다.
${___} 로 표시된 부분은 개발 프로젝트 또는 IDE, OS상에서 환경변수로 기록된 부분이며 말그대로 '변수' 이므로 그 변수의 값을 대입시켜준다. 요즘처럼 github등으로 소스가 웹으로 공개되는 환경에선 하드코딩으로 핵심 설정정보가 쓰여있으면 그대로 노출이 되므로 위험하기 때문에 이러한 방식으로 사용하는 것이 좋다.
Ref::
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide
Spring Boot Config Data Migration Guide
Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.
github.com
https://colabear754.tistory.com/112
[Spring Boot] 다중 Profile을 이용하여 환경에 따라 다른 설정 적용하기
목차 개요 프로젝트를 진행하다 보면 로컬 개발 환경, 테스트 서버, 운영 서버에 따라 DB나 서버 포트 등과 같이 환경에 따라 설정을 다르게 적용해야 할 때가 있다. 이 때, Spring Boot의 다중 Profile
colabear754.tistory.com
https://ksh-coding.tistory.com/43
Spring Boot application.yml 환경별 프로필 설정 방법 (SpringBoot 2.4 기준 비교)
Spring Boot 2.4를 기준으로 환경별 프로필 설정하는 방법이 바뀌었다. Spring Boot 2.4 이전 spring: profiles: dev #활성 프로필 설정 profiles.include: - devdb # 추가할 프로필 설정 --- spring: profiles: local --- spring: pr
ksh-coding.tistory.com
https://honeymon.io/tech/2021/01/16/spring-boot-config-data-migration.html
[spring-boot] 2.4 부터 변경된 구성파일 처리방식 살펴보기 - I'm honeymon(JiHeon Kim).
스프링 부트 2.4(https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes) 출시노트를 살펴보면 인상적인 2가지가 있다. 애플케이션 구성파일(application.yml 혹은 application.properties)의 작동방식
honeymon.io