스프링 부트(핵심 원리와 활용)

Ch05. 외부설정과 프로필(1) - 설정 데이터(내부 파일 합체)

webmaster 2023. 3. 12. 18:39
728x90

설정 파일을 각각 분리해서 관리하면 한눈에 전체가 들어오지 않는 단점이 있다.
스프링은 이런 단점을 보완하기 위해 물리적인 하나의 파일 안에서 논리적으로 영역을 구분하는 방법을 제공한다.

설정 데이터(하나의 파일로 통합)

  • 기존에는 dev 환경은 application-dev.properties , prod 환경은 prod.properties 파일이 필요했다.
  • 스프링은 하나의 application.properties 파일 안에서 논리적으로 영역을 구분하는 방법을 제공한다.
  • application.properties 라는 하나의 파일 안에서 논리적으로 영역을 나눌 수 있다.
    • application.properties 구분 방법 #--- 또는 !--- (dash 3)
    • application.yml 구분 방법 --- (dash 3)
  • 그림의 오른쪽 application.properties 는 하나의 파일이지만 내부에 2개의 논리 문서로 구분되어 있다.
    • dev 프로필이 활성화 되면 상위 설정 데이터가 사용된다.
    • prod 프로필이 활성화 되면 하위 설정 데이터가 사용된다.
  • 프로필에 따라 논리적으로 구분된 설정 데이터를 활성화 하는 방법
    • spring.config.activate.on-profile 에 프로필 값 지정

설정 데이터를 하나의 파일로 통합하기

기존 내역 주석처리

application-dev.properties 주석 처리

#url=dev.db.com
#username=dev_user
#password=dev_pw

application-prod.properties 주석 처리

#url=prod.db.com
#username=prod_user
#password=prod_pw

application.properties 작성

spring.config.activate.on-profile=dev
url=dev.db.com
username=dev_user
password=dev_pw
#---
spring.config.activate.on-profile=prod
url=prod.db.com
username=prod_user
password=prod_pw
  • 속성 파일 구분 기호에는 선행 공백이 없어야 하며 정확히 3개의 하이픈 문자가 있어야 한다.
  • 구분 기호 바로 앞과 뒤의 줄은 같은 주석 접두사가 아니어야 한다.
    • 분할 기호 위에 주석이 있다. 문서가 정상적으로 읽히지 않을 수 있다.
    • 분할 기호 아래에 주석이 있다. 문서가 정상적으로 읽히지 않을 수 있다.

실행

  • 커맨드 라인 옵션 인수 실행
    • --spring.profiles.active=dev
  • 자바 시스템 속성 실행
    • -Dspring.profiles.active=dev
  • Jar 실행
    • ./gradlew clean build
    • build/libs 로 이동
    • java -Dspring.profiles.active=dev -jar external-0.0.1-SNAPSHOT.jar
    • java -jar external-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

 

728x90