HwangHub

[Spring] profiles 설정 (spring boot 2.4 버전 이후) 본문

DEV-STUDY/Spring

[Spring] profiles 설정 (spring boot 2.4 버전 이후)

HwangJerry 2023. 7. 20. 00:55

우리가 프로젝트를 진행할 때, 로컬 환경에서 테스트할 때와 개발 단계에서 프론트엔드와의 협업을 위해 개발 서버에 배포할 때나, 그리고 실제 릴리즈를 진행했을 때 모두 그 실행 환경이 다른 경우가 많다.

 

따라서 스프링에서는 이를 "프로파일 분리"라는 개념으로 환경 설정을 구분하여 적용할 수 있게 하였다. 근데 이게 스프링부트 버전업이 진행됨에 따라, 2.4버전에서 급격하게 변화가 있었나보다. 단적인 예시로, 이전에는 spring.profiles 또는 include를 이용하여 프로파일 설정을 하였다고 한다.

 

나는 미래를 살아가는 개발자로서, 굳이 deprecated된 기능을 연구해볼 필요는 없을 것 같고, 현재 어떻게 활용할 수 있는지만 보려고 한다. (물론 과거의 패턴 또한 알면 좋지만, 내가 지금 알아야 할 것이 이것 뺴고도 정말 많기에 우선은 넘어간다.)

 

스프링부터 2.4이상 버전에서는 작성 방법이 약간 달라진다.

  • spring.profiles가 아닌 spring.config.activate.on-profile로 설정해주어야 한다.
  • spring.profiles.group을 통해 프로필 그룹을 정의할 수 있다. (include대신 group을 사용한다)

spring.profiles와 spring.config.active.on-profile을 동일하게 사용하면 된다.

# appliation.yml example

spring:
 config:
  activate:
   on-profile: local

group을 지정하는 방법도 거의 비슷

 

아래 설정을 예를 들어 설명하자면, spring.profiles.group.[groupname]으로 설정한다.
localdb와 localpath도 각각 프로필로 정의한 값들이다. 그리고 실행할 프로필은 [groupname]이 된다.
아래와 같이 설정한 경우에는 -Dspring.profiles.active=local로 활성 프로필을 설정하면,
자동으로 localdb와 localpath프로필에 설정된 값이 포함되어 실행된다.

spring:
 profiles:
  group:
   local:
    - localdb
    - localpath

프로필을 설정한 후에는 항상 spring.profiles.active설정을 해야한다.

bootRun

gradle bootRun -Dspring.profiles.active=local 

빌드할 때

(테스트 코드 실행 시 프로필 설정이 필요한 경우에만)

gradle build -Dspring.profiles.active=local 

Jar 실행할 때

java -jar -Dspring.profiles.active=local [jar_name].jar

 

출처: https://gaemi606.tistory.com/entry/Spring-Boot-profile%EC%84%A4%EC%A0%95

 

Spring Boot | profile설정 ( + 2.4이상 버전 변경내용 추가 )

Spring Profiles는 애플리케이션 설정을 특정 환경에서만 적용되게 하거나, 환경 별(local, test, production 등)로 다르게 적용할 때 사용된다. properties를 사용하면, 환경별로 각각 다른 파일을 만들어 설

gaemi606.tistory.com

 

Comments