개발 환경 별로 서로 다른 application.properties 파일이 필요한 이유
application.properties는 스프링 부트 애플리케이션의 설정 파일 역할을 하며, 이곳에는 로그 레벨이나 DB 접속 정보 등 다양한 설정을 작성할 수 있다. 이 정보들은 개발 환경 별로 다르게 설정되어야 한다. 개발 환경은 대표적으로 다음 세가지가 있다.
- Dev
- Qa
- Release(혹은 Prod)
Dev 환경에서는 개발을 편하게 만들기 위한 환경이 설정돼야 하기 때문에 로그 레벨이 DEBUG나 TRACE 정도가 되어야 하고, 개발만을 위한 DB가 따로 설정돼야 한다. 또한 Release 환경은 사용자가 직접적으로 접하는 환경이기 때문에 로그 레벨이 ERROR 정도로 설정되어야 하고 DB가 별도로 설정돼야 한다.
즉, application.properties 파일이 개발 환경 별로 다르게 설정돼야 한다. 그렇다면 어떻게 개발 환경 별로 application.properties를 다르게 설정할 수 있을까? 지금부터 이에 대해 알아보자.
개발 환경 별로 서로 다른 application.properties 파일 설정하기
Spring Boot의 프로파일 기반의 설정 파일을 지원하기 때문에 애플리케이션 실행 시 설정 파일을 지정할 수 있다. 즉, 애플리케이션 실행 시 application.properties에 우선하는 설정 파일을 지정하면 application.properties의 설정 값들을 기본으로 지정된 설정 파일에 설정된 값들이 덮어 씌워진다.
이러한 파일들은 기본적으로 application-[개발 환경].properties이라는 이름을 가지며, 만약 Dev, Qa, Release별로 다른 설정 파일을 만들어야 한다면 이들의 이름은 application-dev.properties, application-qa.properties, application-release.properties가 된다.
먼저 각 파일을 application.properties와 같은 디렉토리에 만들어보자. 만들어진 모양은 다음과 같다.
각 파일의 내부는 다음과 같은 모양을 가진다.
application-dev.properties:
logging.level.org.springframework=debug
application-qa.properties:
logging.level.org.springframework=warn
application-release.properties:
logging.level.org.springframework=error
각 파일 내부에서는 로그 레벨을 서로 다르게 설정하도록 했다. Dev에서는 DEBUG로, Qa에서는 WARN으로 RELEASE에서는 ERROR로 설정해 각 실행 환경 별로 필요한 로그만 출력되게 했다.
이제 모든 준비가 마쳐졌다. 이제 위에서 만든 application.properties을 사용하는 방법을 알아보자.
사용할 설정 파일 지정하기
특정 설정 파일을 사용하기 위해서는 application.properties의 spring.profiles.active 값을 지정해주면 된다. 만약 application-dev.properties를 사용하고 싶다면 값을 dev로 application-qa.properties를 사요하고 싶다면 값을 qa로 application-release.properties를 사용하고 싶다면 값을 release로 설정하면 된다.
다음과 dev를 사용하기 위해 spring.profiles.active=dev라고 설정해보자.
spring.application.name=settings
spring.profiles.active=dev
그런 후 애플리케이션을 실행하면 다음과 같이 DEBUG로그가 나오는 것을 볼 수 있다.
jar 파일 실행 시 설정 파일 지정하기
스프링 애플리케이션은 jar 로 패키징한 후 실행되는 것이 일반적이다. 이런 경우 특정 프로필을 사용하려면 다음과 같은 명령어를 사용하면 된다.
java -jar springapplication.jar --spring.profiles.active=release
이를 확인하기 위해 먼저 jar 파일을 빌드해보자. 다음 명령어를 통해 스프링부트 애플리케이션용 jar 파일을 빌드할 수 있다.
./gradlew bootJar
그러면 build/libs 디렉토리에 다음과 같은 jar파일이 생긴다.
이제 다음 명령어를 사용해 application-release.properties를 사용하도록 설정해 애플리케이션을 실행해보자.
java -jar build/libs/settings-0.0.1-SNAPSHOT.jar --spring.profiles.active=release
그러면 다음과 같이 INFO 수준의 로그만 나오는 것을 확인할 수 있다.
전체 코드: GitHub
이 프로젝트가 도움이 되셨다면 저장소에 Star⭐️를 눌러주세요! Stargazers는 다음 페이지에서 확인할 수 있습니다.