Backend/Spring+Boot

ConfigurationProperties 주의사항

findmypiece 2023. 8. 30. 10:49
728x90

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 로 선언해야 한다.

728x90