[spring] 환경에 맞는 properties 파일 구성

공수정·2023년 2월 25일
0

spring

목록 보기
32/32

환경에 맞는 properties 파일 구성이란?

개발을 하다보면 여러가지 환경(=개발, 배포, 테스트 등)에 맞춰 properties 파일의 값을 변경해줘야할 일이 있습니다.

  • DB 접속 정보
  • log 파일의 위치

이런 내용들을 각 환경에 맞는 properties로 구성해놓는 뒤, 각 환경에서 가져다 쓰는 properties 파일이 다르면 편리하겠죠?

ex)

  • 개발 서버(window) : DB - 개발DB, 파일 경로 등의 위치 - D:/dev/...(윈도우 폴더구조에 맞게)~
  • 실서버(linux) : DB - 운영DB, 파일 경로 등의 위치 - /home/...(리눅스 디렉토리 구조에 맞게)~

구성하는 방법

  1. 각 필요한 환경에 맞춰 properties파일을 구성한다
    변경 전 : application.properties
    변경 후 : application-dev.properties, application-test.properties, application-prod.properties
    이 때, dev, test, prod은 정해진 이름이 아니고 원하는 이름으로 정하면 된다.

    application.properties 파일이 존재해도 되고, 존재하지 않아도 된다. 다만 default 값이 application.properties 파일이기 때문에, 존재하지 않는다면 default 파일도 설정해야한다.

  1. 프로젝트 실행 시, 어떤 환경인지 설정한다.
    아래의 방법 중 하나를 선택해서 진행하면 된다.
    - intelliJ와 같은 IDE 툴이라면, 실행 구성 편집에 들어가서 active profile 값에 prod 와 같이 옵션 설정
    - SpringApplication.setAdditionalProfiles(...)을 애플리케이션이 실행되기전에 호출해 설정
    - properties 파일에서 spring-profiles-active=prod 와 같이 설정
    - OS 환경변수에 SPRING-PROFILES-ACTIVE 설정
    - jar 파일을 실행할때, -Dspring.profiles.active=prod 옵션을 주어서 실행

    설정을 application.properteis파일로 하고싶다면, default 값으로 설정하면 된다.

  2. 확인하는 방법
    프로젝트를 실행할 때, 로그에서
    No active profile set, falling back to 1 default profile: "default" 와 같은 문구나 The following 1 profile is active: "dev" 와 같은 문구가 초반에 뜨게 된다.
    첫번째 문장은 active된 profile이 없어서 default profile(=application.properties)
    두번째 문장은 dev profile 로 설정되었다는 로그다.

스프링 버전 2.4 이하에서는 각 properties 파일마다 spring.profile.active=[현재 프로필] 과같이 명시를 해주어야 했는데, 이 이후에는 그렇지 않다고 한다.

profile
계속해서 공부하는 개발자입니다 :)

0개의 댓글