개발을 하다보면 여러가지 환경(=개발, 배포, 테스트 등)에 맞춰 properties 파일의 값을 변경해줘야할 일이 있습니다.
- DB 접속 정보
- log 파일의 위치
이런 내용들을 각 환경에 맞는 properties로 구성해놓는 뒤, 각 환경에서 가져다 쓰는 properties 파일이 다르면 편리하겠죠?
ex)
- 개발 서버(window) : DB - 개발DB, 파일 경로 등의 위치 -
D:/dev/...(윈도우 폴더구조에 맞게)~
- 실서버(linux) : DB - 운영DB, 파일 경로 등의 위치 -
/home/...(리눅스 디렉토리 구조에 맞게)~
application.properties
application-dev.properties
, application-test.properties
, application-prod.properties
등
application.properties
파일이 존재해도 되고, 존재하지 않아도 된다. 다만default
값이application.properties
파일이기 때문에, 존재하지 않는다면 default 파일도 설정해야한다.
프로젝트 실행 시, 어떤 환경인지 설정한다.
아래의 방법 중 하나를 선택해서 진행하면 된다.
- intelliJ와 같은 IDE 툴이라면, 실행 구성 편집에 들어가서 active profile 값에 prod
와 같이 옵션 설정
- SpringApplication.setAdditionalProfiles(...)
을 애플리케이션이 실행되기전에 호출해 설정
- properties 파일에서 spring-profiles-active=prod
와 같이 설정
- OS 환경변수에 SPRING-PROFILES-ACTIVE
설정
- jar 파일을 실행할때, -Dspring.profiles.active=prod
옵션을 주어서 실행
설정을
application.properteis
파일로 하고싶다면,default
값으로 설정하면 된다.
확인하는 방법
프로젝트를 실행할 때, 로그에서
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=[현재 프로필]
과같이 명시를 해주어야 했는데, 이 이후에는 그렇지 않다고 한다.