스프링부트의 properties 설정과 우선순위

스프링부트와 설정 properties

  • 스프링에는 프로퍼티스를 설정하는 방법이 두 가지 이다.
    • @Value(${abc.test}
    • @ConfigurationProperties(“tester”)

우선순위

  • 프로퍼티스에 대한 우선순위가 존재한다.

프로퍼티 우선 순위

  1. 유저 홈 디렉토리에 있는 spring-boot-dev-tools.properties
  2. 테스트에 있는 @TestPropertySource
  3. @SpringBootTest 애노테이션의 properties 애트리뷰트
  4. 커맨드 라인 아규먼트
  5. SPRING_APPLICATION_JSON (환경 변수 또는 시스템 프로티) 에 들어있는 프로퍼티
  6. ServletConfig 파라미터
  7. ServletContext 파라미터
  8. java:comp/env JNDI 애트리뷰트
  9. System.getProperties() 자바 시스템 프로퍼티
  10. OS 환경 변수
  11. RandomValuePropertySource
  12. JAR 밖에 있는 특정 프로파일용 application properties
  13. JAR 안에 있는 특정 프로파일용 application properties
  14. JAR 밖에 있는 application properties
  15. JAR 안에 있는 application properties
  16. @PropertySource
  17. 기본 프로퍼티 (SpringApplication.setDefaultProperties)
  • 테스트 동작 시 배포 설정보다 테스트에서의 설정의 우선순위가 높다.

application.properties 의 위치에 따른 우선순위

  1. file:./config/
  2. file:./
  3. classpath:/config/
  4. classpath:/

출처 : 백기선 개발자님의 스프링부트 개념과 활용