Programming/Spring Boot

springboot 개발 환경에 따른 properties 사용 방법 (local, dev, prod)

Jan92 2021. 7. 31. 02:08

 

스프링부트에서 개발 환경에 따라 properties를 사용하는 방법입니다.

우선 properties란 무엇인지 알아보겠습니다.

 

properties

.properties는 설정 파일입니다.

자바 응용프로그램 내에서 사용되는 설정과 관련된 변수들을 파일에다가 쓰고, 읽어오는 방식에 사용되는 파일입니다.

이 설정 파일은 외부에서 파일을 넣을 수도 있고, 프로젝트 내부적으로도 넣어서 사용할 수 있습니다.

 

위에서 말한 설정과 관련된 변수들은 문자열로 저장됩니다.

각 줄은 일반적으로 하나의 프로퍼티를 저장하며, 한 문자열은 key, value 쌍으로 저장됩니다.

줄의 맨 앞에 # 또는 ! 를 사용하여 주석처리를 할 수 있습니다.

 

위에 보이는 파일은 가장 기본이 되는 application.properties 파일로 스프링부트가 어플리케이션을 구동할 때 자동으로 로딩하는 파일입니다.

 

 


 

그렇다면 개발환경에 따라 properties를 다르게 사용하는 이유와 사용하는 방법은 어떻게 될까요?

 

local, dev, prod

실제 배포를 위한 프로젝트를 작업하며 application.properties, application-local.properties, application-dev.properties, application-prod.properties 등 여러게의 프로퍼티를 사용하였습니다.

 

개발을 하며 로컬 서버에서 구동할 때와 개발서버에서 구동할 때, 실 서버에서 구동할 경우 설정 변수 값이 다르게 적용되는 경우가 많은데, 이럴 때 개발환경에 따라 각각의 프로퍼티를 사용하면 다르게 사용되는 값들을 하나하나 다 바꿔주는 번거로운 일을 하지 않을 수 있습니다.

 

* 주의할 점으로는 새로 생성하는 properties는 application-{이름}.properties 라는 규칙을 따라야 한다는 점입니다.

 

 

properties

 

가장 많이 접하게 되는 예시로는 로컬에서 테스트하는 database 접속 정보와 실서버에 이용하는 database 접속 정보가 다를 때입니다.

그 외에도 다른 api에 접근하는 경우 해당 api 역시 테스트 서버와 개발 서버, 실서버가 따로 있다면 해당되는 설정 변수 값이 다를 것입니다. 이럴 때 각각의 properties를 사용하게 됩니다.

 

 

@Value

프로퍼티는 다양한 사용 방법이 있지만 그중에서 제가 사용하는 @Value 어노테이션을 통해 사용하는 방법을 보겠습니다.

@Value 어노테이션은 org.springframework.beans.factory.annotation 패키지에 속해있습니다.

사용 방법은 @Value("${key}") 아래에 인스턴스를 정의하면 됩니다.

 

* 간혹 lombok의 @Value 어노테이션이 적용되어 해당 기능이 사용되지 않는 경우도 있습니다. 

 

 


 

그렇다면 로컬, 개발, 실서버 각각의 환경에서 환경에 맞는 properties를 불러와서 사용하는 방법을 보겠습니다.

 

application-local.properties

Intellij 내부에서 어플리케이션을 가동하는 경우 Edit Configurations에서 적용하여 사용할 수 있습니다.

active: local, oauth properties를 사용하여 어플리케이션이 구동되는 것을 볼 수 있습니다.

 

(기본 구동을 application-local.properties 로 구동하였고, application-oauth.properties 는 소셜 로그인 관련 설정 파일인데 include 하여 실행하도록 하였습니다. 해당 코드는 맨 위 이미지를 보면 확인할 수 있습니다.)

 

 

 

application-prod.properties

 

터미널을 통해 실행하는 방법입니다.

기본적으로 터미널을 통해 어플리케이션을 구동하는 명령어는 java -jar (어플리케이션 파일명).jar 입니다.

이때는 기본적으로 적용되는 application.properties 파일이 적용될 것입니다.

 

dev 또는 prod 프로퍼티를 사용하고 싶다면

java -jar -Dspring.profiles.active=prod (어플리케이션 파일명).jar 명령어를 통해 실행할 수 있습니다.

 

 

 

 

* java에서 사용되는 설정 파일은 properties 외에 보기에 편한 yml이라는 설정 파일도 많이 사용된다고 하니 다양한 사용방법을 알아두는 것도 좋을 것 같습니다.