⭐ Plogramming/Spring

property 우선 순위 (feat. application.properties)

김진한

jar 파일로 만들어서 리눅스에서 실행시키려 하는데 hostname이 자꾸 달라져서 고민 끝에 외부 설정 파일로 빼기로 했다.

그럼 jar 내부에 있는 properties보다 우선순위가 위에 있기 때문에 jar 밖에서 설정하면 그 부분을 따라가게 된다.

우선순위 순으로 정의한 프로퍼티 값이 오버라이딩된다.

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