스프링부트의 properties 설정과 우선순위
스프링부트와 설정 properties
- 스프링에는 프로퍼티스를 설정하는 방법이 두 가지 이다.
- @Value(${abc.test}
- @ConfigurationProperties(“tester”)
우선순위
- 프로퍼티스에 대한 우선순위가 존재한다.
프로퍼티 우선 순위
- 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
- 테스트에 있는 @TestPropertySource
- @SpringBootTest 애노테이션의 properties 애트리뷰트
- 커맨드 라인 아규먼트
- SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
- ServletConfig 파라미터
- ServletContext 파라미터
- java:comp/env JNDI 애트리뷰트
- System.getProperties() 자바 시스템 프로퍼티
- OS 환경 변수
- RandomValuePropertySource
- JAR 밖에 있는 특정 프로파일용 application properties
- JAR 안에 있는 특정 프로파일용 application properties
- JAR 밖에 있는 application properties
- JAR 안에 있는 application properties
- @PropertySource
- 기본 프로퍼티 (SpringApplication.setDefaultProperties)
- 테스트 동작 시 배포 설정보다 테스트에서의 설정의 우선순위가 높다.
application.properties 의 위치에 따른 우선순위
- file:./config/
- file:./
- classpath:/config/
- classpath:/
출처 : 백기선 개발자님의 스프링부트 개념과 활용