본문 바로가기
개발자의 공부방/에디터 & 유틸리티

Intellij] SpringBoot Profile 을 설정하자

by 쌈빡한 쥬니준 2020. 12. 4.
728x90
반응형

보통 서비스를 운영할 때 profile 설정은 총 3개로 구분 짓습니다.

 

  • local : 자신의 PC 로컬, 개발환경
  • dev : 테스트성(QA), 서버환경
  • prod : 실질적 운영 환경

profile 설정하는 방법은 여러가지가 있지만 오늘은 현재 프로젝트에서 설정되어 있는 것을 분석해보면서 프로파일이 어떻게 설정되어 있는지 확인해보겠다.


환경

  • IDE [인텔리제이]
  • 스프링부트 [2.2.4.RELEASE]
  • Gradle [6.7.1]

※ Intellij 에서 Gradle 버전 확인하기.

더보기

Ctrl + Alt + S → Bulid, Execution, Deployment → Bulid Tools → Gradle → Gradle user home

Gradle user home에 경로를 누르면 Gradle 경로와 함께 Gradle 버전이 나온다.

 


스프링부트 프로젝트의 구조

1) 현재 구조는 resources와 함께 resources-env 를 따로 구분한 구조이다.

profile은 resources-env 여기에 setting한다.

 

 

2) properties에는 DB 정보들이 담겨있다.


build.gradle 에서 profile 설정

gradle 에서 해당 프로젝트의 profile을 비교해서 local이면 resources-env 하위 폴더에 local폴더 properties를 읽게했다.


Profile 변경하기

위 처럼 셋팅을 했을 시 Default일 때는 local DB로 연결이 될 것이다.

그럼 dev 혹은 prod로 붙으려면 어떻게 해야할까?

 

방법 1)

방법1_이미지2) 귀찮으니깐 이렇게 하는 게 편안..

Intellij 상단 Run을 클릭 → Edit Configuration 을 누르면 아래와 같은 설정창이 나온다.

혹은 두번째 스크린샷처럼 하면 된다.

 

Run/Debug Configurations 창에 보면 VM Options이 있는데 여기에는 많은 옵션을 줄 수 있다.

여기서 사용할 옵션은 -Dspring.profiles.active='' 을 사용하면 된다.

 

이 옵션에 -Dspring.profiles.active=prod로 설정하고 build.gradle 에서 prod로 설정하면 된다.

 

 

방법 2)

 

방법 1)과 비슷하다. 일단 WebApplication의 Run/Debug Configurations가 아닌 BootRun Run/Debug Configurationsd을 실행하면 된다.

 

BootRun은 Gradle로 프로젝트 만들게 되면 Intellij 오른쪽 라인에 Gradle탭이 나타난다.

Gradle탭을 누르고 Task폴더 하위를 보면 위의 스크린샷과 동일하게 나올 것이다.

 

이때 마우스 오른쪽을 누르면 Edit boorRun이 나오는데 해당 부분을 클릭한다.

 

기존 Run/Debug Configurations창과는 살짝 다른데 

이유는 방법1_이미지2)  처럼 들어가지 않아서 그런 것이다.

무튼 여기서 설정해도 상관없다.

 

위 창을 들어오면 Arguments 칸이 보이고 옵션값으로는 -Pprofile=prod 라고 적는다.

 

그리고 실행할 때는 WebApplication이 아닌 프로젝트명 [bootRun]을 실행한다.

현재 필자는 'blueAdmin [bootRun]' 이걸 실행한다.


요약

1. bulid.gradle 에서 profile 셋팅.

2. 원하는 profile값을 VM Option 혹은 Argument에 준다.

3. 실행, 끝.


번외

현재 이 프로젝트인 경우에는 @Configuration을 이용해서 Bean설정을 해준 후 보안프로토콜 화면으로 자동전환하게 만들었다. 그래서 위의 스크린샷을 보면 @Value 값이 server.config.type 으로 되어 있는데 이 부분은 resources-env 하위 폴더에 있는 properties에 정의되어 있다. 그렇기때문에 profile 스왑하는 과정에서 if조건처리 된 부분을 지워주고 해야지만 위 방법들이 먹힌다.

반응형

댓글0