properties 분리

아래 3가지 방법을 혼합해서 사용 가능하지만 1번과 같은 스프링에서 기본적으로 읽는 순서에 따라 속성이 무시될수 있다.

  1. war/jar 파일에 포함하지 않고 경로 지정해서 읽기
    • 설정 파일 위치 지정 / 외부에 노출될수 있다.
    • 빌드 후 변경해야할 때 / 실서버에 접근하기 힘들때
    • 배포 파일을 직접 고객(?)에게 전달해야하는 경우 / DB 접속 정보를 모를 때 등...
  2. spring.profiles.active 옵션을 통해서 선택
    • 어플리케이션(jar/war) 실행 옵션을 통해 properties 파일을 선택할수 있다.
    • 개발과 배포에 따른 설정파일을 분리 생성
    • dev/prod 등 properties파일이 함께 jar/war에 포함
  3. maven의 profile 설정을 통하여 읽기
    • local/dev/prod등 배포 대상에 해당하는 설정파일을 폴더별로 관리하기 편하다.
    • 배포 환경별 설정파일이 여러개인 경우
    • war/jar에 배포 대상별 설정 파일이 모두 포함되지 않기 때문에 배포 별로 빌드를 해야한다.

properties 분리 - 경로 지정해서 읽기

  • springboot 에서 application.properties 파일을 읽는 위치 순서
  • 1번이 우선순위가 제일 높음
  1. A /config subdir of the current directory.
  2. The current directory
  3. A classpath /config package
  4. The classpath root

spring.config.location 옵션을 사용하여 변경 가능하지만 properties파일이 여러개인 경우 모두 선언해야함(jar/war에 포함된 properties파일도 해당)

java -jar myproject.jar --spring.config.location=default.properties,classpath:/override.properties

properties 분리 - spring.profiles.active 옵션

  1. 파일은 구분하기 쉽게 배포 방식별로 작성
  • application-[name].properties
application-dev.properties
application-prod.properties
  1. 사용할 application 설정파일에 속성 추가
spring.profiles.active=dev
spring.profiles.active=prod

properties 파일 선택

1. 배포파일 실행시 선택

Dspring.profiles.active 옵션을 사용하여 선택

// application.properties
- java -jar demo.war

// application-prod.properties
- java -jar -Dspring.profiles.active=prod demo.war

// application-dev.properties
- java -jar -Dspring.profiles.active=dev demo.war

2. 개발툴 실행시 선택 - eclipse

아래 2가지 방법 중 선택

1. VM arguments 변경

프로젝트 선택 -> Run As -> Run Configurations
-> Spring Boot App -> 프로젝트 선택 -> Arguments 탭 -> VM arguments 항목
-> 아래 내용 추가

-DSpring.profiles.active=dev
// or
-DSpring.profiles.active=prod

2. 실행 옵션 변경

프로젝트 선택 -> Run As -> Run Configurations
-> Spring Boot App -> 프로젝트 선택 -> Spring Boot 탭 선택
-> Profile 항목에서 사용할 properties 선택 (dev/prod... 등)

+ Recent posts