외부 설정
properties
key-value 형태
yaml
환경 변수
@SpringBootTest 애노테이션의 properties 애트리뷰트
프로퍼티 우선 순위
유저 홈 디렉토리에 있는 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)
@SpringBootTest 애노테이션의 properties 애트리뷰트
기존 proeperties에서 값을 가져온다.
/test/resources/
에 프로퍼티 설정을 따로 해주면/resource/
값을 오버라이딩 한다./resource/
에만 추가한 값이 있다면 테스트를 실행할 때 오버라이딩 할 값이 없으므로 에러가 난다.
테스트용 값을 따로 지정해주면 이 문제를 해결할 수 있다.
test.properties를 따로 정의해서 사용해도 해결할 수 있다.
커맨드 라인 argument
4순위이기 때문에 proeprties 값을 덮어 쓴다.
application.properties의 우선순위
file:./config/
file:./
classpath:/config/
classpath:/
기타 설정
application.properties 랜덤값 설정
${random.*}
플레이스 홀더 설정
name = keesun
fullName = ${name} baik
@ConfigurationProperties
여러 프로퍼티를 묶어서 읽어올 수 있다.
properties에 등록된 값대로 잘 출력된다.
@EnableConfigurationProperties
메인 애플리케이션에 달고 Properties 클래스들을 등록해줘야 하지만 이미 자동으로 등록되므로 달아주지 않아도 된다.
융통성 있는 바인딩
프로퍼티 키 값의 형태는 다양할 수 있다.
context-path
context_path
contextPath
@DurationUnit
시간 정보를 받고 싶을 때 사용한다.
properties에 s를 붙여주면 애너테이션이 없어도 duration으로 알아서 인식한다.
@Validated
@NotNull 등 properties의 validation을 해준다.
Last updated