스프링 부트에서는 설정을 외부로 뺄 수 있어서 같은 애플리케이션을 서로 다른 환경으로 작업할 수 있다. 외부 설정은 자바 Properties 파일, YAML파일, 환경변수, 커맨드라인 인자 등 다양한 소스를 활용할 수 있다.
SpringApplication은 기본적으로 모든 커맨드라인 옵션인자를 property로 변환해서 스프링 Environment에 추가한다.
스프링 부트는 애플리케이션을 시작하면서 다음 위치에서 자동으로 application.properties
와 application.yaml
파일을 찾아 로드한다. 이 파일들은 애플리케이션 설정을 외부에서 정의할 수 있게 해주며, 스프링 부트는 여러 위치에서 설정 파일을 로드할 수 있다.
classpath:/
classpath:/config/
file:./
file:./config/
/config/
(절대 경로)스프링 부트는 위의 위치들을 우선순위에 따라 탐색하여 설정 파일을 로드한다. 예를 들어, classpath:/
에 있는 파일이 file:./
에 있는 파일보다 우선순위가 높다.
또한, 특정 프로파일을 위한 설정 파일도 로드할 수 있다. 예를 들어, application-dev.properties
또는 application-dev.yaml
파일을 사용하여 "dev" 프로파일에 대한 설정을 정의할 수 있다.
이 외에도, 스프링 부트는 @PropertySource
애노테이션을 사용하여 특정 클래스에 프로퍼티 파일을 지정할 수도 있다.
다음은 설정 파일이 로드되는 순서를 요약한 것이다:
classpath:/
classpath:/config/
file:./
file:./config/
/config/
이러한 위치들 중 하나에 application.properties
또는 application.yaml
파일을 두면, 스프링 부트는 애플리케이션이 시작될 때 자동으로 해당 파일들을 로드하고 설정을 적용한다.