Junhyunny's Devlogs

글 검색

기술 글 제목, 본문, 카테고리에서 검색합니다.

    이전 화면으로

    스프링 다중 프로파일 사용

    • spring-boot
    이 글의 목차

    1. Use Active Profile

    스프링 프레임워크(spring framework)는 실행 환경에 맞는 설정을 주입할 수 있는 강력한 기능을 제공한다. spring.profiles.active라는 설정을 통해 애플리케이션이 어느 실행 환경에서 동작 중인지 결정할 수 있다. application.yml 설정이나 스프링 애플리케이션을 실행하는 커맨드를 통해서 주입할 수 있다.

    application.yml
    spring:
      profiles:
        active: dev
    Run command
    • 실행할 때 적용된 프로파일(profile)이 dev인 것을 로그로 확인할 수 있다.
      • The following 1 profile is active: “dev”
    $ java -jar -Dspring.profiles.active=dev action-in-blog-0.0.1-SNAPSHOT.jar
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v3.1.2)
    
    2023-08-17T01:09:07.433+09:00  INFO 38499 --- [           main] action.in.blog.ActionInBlogApplication   : Starting ActionInBlogApplication v0.0.1-SNAPSHOT using Java 20.0.2 with PID 38499 (/Users/junhyunk/Desktop/action-in-blog/build/libs/action-in-blog-0.0.1-SNAPSHOT.jar started by junhyunk in /Users/junhyunk/Desktop/action-in-blog/build/libs)
    2023-08-17T01:09:07.435+09:00  INFO 38499 --- [           main] action.in.blog.ActionInBlogApplication   : The following 1 profile is active: "dev"
    2023-08-17T01:09:07.890+09:00  INFO 38499 --- [           main] action.in.blog.ActionInBlogApplication   : Started ActionInBlogApplication in 0.798 seconds (process running for 1.311)

    2. Use Multiple Profiles

    애플리케이션을 개발하면 상황에 맞게 여러 프로파일을 조합해서 사용하는 경우가 있다.

    • 환경 별로 로깅 전략을 프로파일을 통해 제어하는 경우
    • 특정 테스트에서만 필요한 빈(bean)을 프로파일을 통해 제어하는 경우

    프로파일을 조합하는 방법이 스프링 부트(spring boot) 2.4.X 버전 이후로 변경되었다. 이번 포스트에선 현재 최신 3.1.2 버전을 기준으로 다중 프로파일을 사용하는 방법에 대해 정리하였다.

    2.1. application.yml

    • spring.profiles.group 설정을 사용한다.
    • 그룹에 사용 중인 프로파일을 정의한다.
      • 각 프로파일 별로 함께 사용될 프로파일들을 추가한다.
    • local 프로파일 활성화
      • etc-1, etc-2 프로파일도 함께 사용된다.
    • dev 프로파일 활성화
      • etc-1, etc-3 프로파일도 함께 사용된다.
    spring:
      profiles:
        active: local
        group:
          local:
            - etc-1
            - etc-2
          dev:
            - etc-1
            - etc-3

    2.2. Test

    각 환경 별로 애플리케이션을 실행했을 때 함께 적용되는 프로파일들을 살펴보겠다.

    • local 환경
      • The following 3 profiles are active: “dev”, “etc-1”, “etc-3”
    $ java -jar -Dspring.profiles.active=local action-in-blog-0.0.1-SNAPSHOT.jar
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v3.1.2)
    
    2023-08-17T11:15:58.081+09:00  INFO 71164 --- [           main] action.in.blog.ActionInBlogApplication   : Starting ActionInBlogApplication v0.0.1-SNAPSHOT using Java 20.0.2 with PID 71164 (/Users/junhyunk/Desktop/action-in-blog/build/libs/action-in-blog-0.0.1-SNAPSHOT.jar started by junhyunk in /Users/junhyunk/Desktop/action-in-blog/build/libs)
    2023-08-17T11:15:58.083+09:00  INFO 71164 --- [           main] action.in.blog.ActionInBlogApplication   : The following 3 profiles are active: "local", "etc-1", "etc-2"
    2023-08-17T11:15:58.474+09:00  INFO 71164 --- [           main] action.in.blog.ActionInBlogApplication   : Started ActionInBlogApplication in 0.741 seconds (process running for 1.064)
    • dev 환경
      • The following 3 profiles are active: “dev”, “etc-1”, “etc-3”
    $ java -jar -Dspring.profiles.active=dev action-in-blog-0.0.1-SNAPSHOT.jar
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v3.1.2)
    
    2023-08-17T11:14:45.644+09:00  INFO 70919 --- [           main] action.in.blog.ActionInBlogApplication   : Starting ActionInBlogApplication v0.0.1-SNAPSHOT using Java 20.0.2 with PID 70919 (/Users/junhyunk/Desktop/action-in-blog/build/libs/action-in-blog-0.0.1-SNAPSHOT.jar started by junhyunk in /Users/junhyunk/Desktop/action-in-blog/build/libs)
    2023-08-17T11:14:45.646+09:00  INFO 70919 --- [           main] action.in.blog.ActionInBlogApplication   : The following 3 profiles are active: "dev", "etc-1", "etc-3"
    2023-08-17T11:14:46.069+09:00  INFO 70919 --- [           main] action.in.blog.ActionInBlogApplication   : Started ActionInBlogApplication in 0.777 seconds (process running for 1.264)

    KEEP READING

    DISCUSSION

    댓글