version
은 SpringBoot 2.3.6
을 기준으로 한다.
SpringBoot 2.4
버전 이후로는 설정이 또 많이 바뀐다.
미친것 같다. 1년사이에 버전업을 몇번이나 하는거야..궁시렁
Springboot
프로젝트를 진행하게되면 우선 설정파일은 어떤 형식으로 할지 정해야한다.
properties
파일로 작성할 것인지, yml
파일 형식으로 할 것인지 정해야한다.
트렌드도 그렇고, 실제로 쓰기에도 yml
파일 형식이 대세다.
가장 큰 장점은, yml
에서는 profile
분리가 아주 편하다는 것이다.
(물론, SpringBoot 2.4.x
부터는 properties
에서도 지원을 한다.)
기본적으로 application.yml
파일을 기점으로 설정파일을 인식하는데, bootstrap.yml
파일을 회사 소스에서 보고, 이게 뭔가 하면서 알아보다가 새로 알게 된 것이 있어서 정리하고자한다.
- 사이좋게
application.yml
파일과bootstrap.yml
파일이 놓여있다.
Spring
의 설정 파일은 application.yml
에서부터 시작한다.bootstrap.yml
요녀석은 뭐란 말인가? 🤔SpringBoot 2.4
에서는 다시 합쳐졌지만, 그 이전 버전에서 Spring Cloud
프로젝트를 사용하고 있었다면, 그 설정은 application.yml
에서 해주는 것이 아니라, bootstrap.yml
을 만들어서 그곳에서 설정을 해줘야한다.
예컨데, 우리 회사같은 경우, Spring Cloud
에서 지원하는 discovery, gatewary, oauth2
등을 사용하는데, 이 모듈을 사용할 때 설정하는 설정값들이나 profiles
설정은 bootstrap-xxx.yml
에서 해주어야한다.
많은 프로젝트들이 아직 Springboot 2.4
로 버전업을 하지 않은 이유중 하나가 이 설정을 다시 바꿔야 하기 때문이라고도 한다.
spring.profiles.active
와 spring.profiles.include
의 차이는 뭘까?
spring.profiles.active
는, 분리된yml
파일에서spring.profiles
로 지정된profile
이름을 불러와, 그 곳에 설정된 설정을 가지고온다. 노란색 박스에 있는 것처럼 이름이 같은profile
을 불러온다.- 오른쪽에 보이는 빨간 동그라미에 있는
---
3개의 하이픈으로 구성된 저 구분점으로 인해 파일이 구분된다. 하나의 파일에 여러개의 구분점 섹션을 통해 설정을 한 곳에 모아서 관리할 수 있는 장점이 있다.spring
은 저 구분점을 기준으로 다른 파일로 인식한다. 예컨데,application-local-develop.yml
로 인식하여 다른 파일처럼 설정을 구분하여 사용할 수 있고, 조립해서 사용할 수 있다.
spring.profiles.include
는 설정별로 분리된yml
파일들을 불러온다. 이는springboot 2.4
에서는import
개념으로 바뀌었다. 사진에서는encrypt-keystone
만 사용되었지만, 얼마든지 더 추가하여include
해서 설정들을 조립할 수 있다.
java
를 사용하면 사용할 수록, 공장이 되는 기분이다. 부품을 만들고, 조립하고, 뺐다 꼈다 하면서 프로그래밍을 한다. 옛날부터 레고를 좋아라 했는데 코딩을 하면 할 수록 레고부품을 내 맘대로 조립하면서 멋진 작품을 만들기위해 고민하고, 이것저것 해보는 어렸던 내 모습이 상기된다.
yml
설정 역시 하나의 부품처럼 마음껏 customizing
할 수 있다는 것이 참 재미있고 매력적인것 같다.
그럼 오늘은 이만 ! ✋