TIL (20210812)- yml profile 설정 (feat. application, bootstrap)

Joshua_Kim·2021년 8월 12일
1

📖 TIL

목록 보기
2/8
post-thumbnail

🌱 서론

  • versionSpringBoot 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 .. 너네 뭐야?

  • 사이좋게 application.yml파일과 bootstrap.yml파일이 놓여있다.
  • 위에서 잠깐 언급했지만, Spring의 설정 파일은 application.yml에서부터 시작한다.
    그럼 대체 bootstrap.yml 요녀석은 뭐란 말인가? 🤔

💡 bootstrap.yml 은 Spring Cloud Config 파일이다.

  • SpringBoot 2.4 에서는 다시 합쳐졌지만, 그 이전 버전에서 Spring Cloud 프로젝트를 사용하고 있었다면, 그 설정은 application.yml에서 해주는 것이 아니라, bootstrap.yml을 만들어서 그곳에서 설정을 해줘야한다.

  • 예컨데, 우리 회사같은 경우, Spring Cloud에서 지원하는 discovery, gatewary, oauth2 등을 사용하는데, 이 모듈을 사용할 때 설정하는 설정값들이나 profiles 설정은 bootstrap-xxx.yml 에서 해주어야한다.

  • 많은 프로젝트들이 아직 Springboot 2.4로 버전업을 하지 않은 이유중 하나가 이 설정을 다시 바꿔야 하기 때문이라고도 한다.


🗝 spring.profiles.active vs spring.profiles.include

  • spring.profiles.activespring.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 해서 설정들을 조립할 수 있다.

🙏 오늘의 TIL을 마치며

  • java를 사용하면 사용할 수록, 공장이 되는 기분이다. 부품을 만들고, 조립하고, 뺐다 꼈다 하면서 프로그래밍을 한다. 옛날부터 레고를 좋아라 했는데 코딩을 하면 할 수록 레고부품을 내 맘대로 조립하면서 멋진 작품을 만들기위해 고민하고, 이것저것 해보는 어렸던 내 모습이 상기된다.

  • yml 설정 역시 하나의 부품처럼 마음껏 customizing 할 수 있다는 것이 참 재미있고 매력적인것 같다.

  • 그럼 오늘은 이만 ! ✋

profile
인문학 하는 개발자 💻

0개의 댓글