스프링 부트에서는 설정을 외부로 뺄 수 있어서 같은 애플리케이션을 서로 다른 환경으로 작업할 수 있다. 외부 설정은 자바 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 파일을 두면, 스프링 부트는 애플리케이션이 시작될 때 자동으로 해당 파일들을 로드하고 설정을 적용한다.