개발하는 자몽

[TIL / Spring] 설정 파일과 프로필 본문

Java/Spring

[TIL / Spring] 설정 파일과 프로필

jaamong 2024. 4. 26. 09:40
 

스프링 부트 - 핵심 원리와 활용 | 김영한 - 인프런

김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다.  [임베딩 영상] 김영한의 스

www.inflearn.com

외부설정과 프로필1

 

오랜만에 Spring을 공부하고 있는데 설정 분리 등을 다 잊어버린 것 같아서 복기 겸 간단하게 정리한다.

 


 

DB 설정값을 코드 내부가 아닌 개발 서버와 운영 서버에 `application.properties`와 같은 파일을 두어 설정을 주입할 수 있다. 하지만 각 서버에 저장된 설정 파일을 관리하거나 변경 이력을 확인하기 어렵다. 

 

이러한 문제점은 설정 파일을 프로젝트 내부에 포함해서 관리하여 해결할 수 있다. 설정 파일도 코드와 함께 빌드되게 하는 것이다. 

  1. 프로젝트 내부에 코드와 함께 각 환경에 필요한 설정 데이터를 포함 및 관리
  2. 개발, 운영 설정 파일을 모두 포함하여 빌드
  3. `app.jar`는 개발, 운영 두 설정 파일을 모두 가지고 배포됨
  4. 실행 시 어떤 설정 데이터를 읽어야 하는지 구분

스프링은 `프로필`이라는 개념을 지원하여 4번 과정을 해결한다.

 

application-xxx.properties

프로젝트 src > main > resources 디렉토리에 `application-xxx.properties` 파일을 생성한다. `xxx`에는 서버 환경을 구분하는 `dev`나 `prod` 등의 단어들이 보통 들어간다. 

 

해당 파일에 필요한 설정들을 입력한다. 아래 파일은 `application-dev.properties`이다.

url=dev.db.com
username=dev_user
password=dev_pw

 

프로필 설정

dev 외에도 prod 설정 파일이 있을 수 있으므로, 이를 구분하기 위해 프로필을 설정해야 한다. 

 

아래 이미지에서 `Edit Configurations...`를 클릭한다.

 

클릭 후 `Program arguments(CLI arguments)`에 다음과 같이 입력한다.

--spring.profiles.active=dev

# 또는

-Dspring.profiles.active=dev

 

위 옵션에 `dev`를 입력하면 `application-dev.properties` 파일에 적힌 설정값이 활성화된다. 마찬가지로 `prod`를 입력하면 `application-prod.properties` 파일에 적힌 값이 활성화된다.

 

한 파일에서 설정값 작성하기(application.properties)

`application.properties`에 모두 작성하는 방법도 있다. 아래와 같이 작성하면 dev와 prod 프로필의 설정값을 한 파일에 담을 수 있다.

spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw

이때 프로필을 구분하기 위해 각 프로필 설정값 맨 위에 `spring.config.activate.on-profile=xxx`을 작성해야 하며, 프로필 설정값이 바뀌는 구간에서는 `#---`를 작성하여 구분해야 한다. 

 

위와 같이 작성하고 Configuration에 동일하게 프로필을 지정해 주면 해당 설정값이 활성화된다. 

 

default profile

Configuration에 아무런 프로필도 지정해주지 않으면 default로 설정된다. default는 `application.properties`에서 아래와 같이 지정하면 된다.

url=local.db.com
username=local_user
password=local_pw
#---
spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw​

 

맨 위에 아무런 프로필도 지정되지 않은 것이 default이다. 따라서 프로필을 지정하지 않으면 맨 위에 설정이 기본값으로 설정된다. 

 

 

 

Comments