Spring 에서 제공하는 @ConfigurationProperties 를 사용하면 application.yml 에 구성된 정보를 특정 클래스로 바인딩 할 수 있다. 이 때 몇가지 주의사항이 있다.
1. 바인딩할 클래스에 @ConfigurationProperties 주석을 추가하는 것은 당연한데 그 외 @Configuration 클래스나 @SpringBootApplication 클래스에 @EnableConfigurationProperties 도 추가해야 하고 파라미터로 @ConfigurationProperties 주석을 추가한 클래스를 포함해야 한다.
2. @ConfigurationProperties 에 prefix 를 지정할 때 카맬케이스는 사용할 수 없다. 만약 application.yml 에 giftCard 라는 키의 값을 바인딩 하고 싶다면 prefix 로 giftcard 또는 gift-card 로 지정해야 한다.
3. 기본적으로 application.yml 에는 있는데 @ConfigurationProperties 가 선언된 클래스 내 변수로 지정되지 않았다면 그냥 바인딩 되지 않는다. 이는 @ConfigurationProperties ignoreUnknownFields 기본값이 true 이기 때문이다. application.yml 에는 있지만@ConfigurationProperties 가 선언된 클래스에서는 알 수 없는 필드는 무시한다는 설정이다.
4. application.yml 에 없는데 @ConfigurationProperties 가 선언된 클래스에는 변수로 선언되어 있더라도 기본적으로 예외는 발생되지 않고 @ConfigurationProperties 가 선언된 클래스에 선언된 변수에는 그냥 null 이 할당된다. 단, 코틀린 환경이라면 이를 위해 변수를 반드시 nullable 로 선언해야 한다.
'Backend > Spring+Boot' 카테고리의 다른 글
swagger 사용시 패키지가 다른 동일 클래스를 구별하지 못하는 이슈 (1) | 2023.08.30 |
---|---|
spring cloud vault 으로 vault 연동 (0) | 2023.06.14 |
@RequestPart 사용할 때 주의사항. 그리고 @ModelAttribute (2) | 2022.11.07 |
@JsonCreator 주의사항 (0) | 2022.11.02 |
[SpringBoot] SpringMVC 에서 WebClient 사용시 주의사항 (0) | 2022.07.28 |