💡 개요
@Setter
@ConfigurationProperties(prefix = "naver")
확실한 이유는 모르겠지만, @Setter가 없다면 @ConfigurationProperties를 사용하더라도 application.yml에 정의된 값을 객체에 바인딩할 수 없다.
오늘은 그 이유에 대해 정리해 보자.
🛠️ ConfigurationProperties
일단 ConfigurationProperties가 뭔지부터 정리 해보자.
@ConfigurationProperties는 *.properties 또는 *.yml 파일에 정의된 설정 값을 자바 클래스의 필드에 바인딩해 주는 애노테이션이다.
위 코드를 보면 prefix가 naver로 설정되어 있는데, 이것은 설정 파일에 있는 naver 하위에 있는 설정 값들을 모두 조회하는 것이다. (naver.client-id, naver.secret-id, …)
⚙️ ConfigurationProperties에 Setter가 필요한 이유
이러한 객체에 Setter가 필요한 이유는 기본적으로 @ConfigurationProperties는 ConfigurationPropertiesBinder라는 컴포넌트를 통해 값을 바인딩하기 때문이다
어노테이션의 공식 문서를 보면 확실하게 값을 할당하기 위해선 Setter나 @ConstructorBinding을 사용해야 한다고 나온다.
처음 보는 어노테이션을 사용할 땐, 반드시 공식문서나 내부 설명을 찾아보자..
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.05.16 - PSA (Portable Service Abstraction) (0) | 2025.05.16 |
---|---|
[개발 일기] 2025.05.15 - 클래스마다 무조건 인터페이스를 생성?? (0) | 2025.05.15 |
[개발 일기] 2025.05.13 - 자바 Optional 정리 (0) | 2025.05.13 |
[개발 일기] 2025.05.12 - 분산 저장 (파티셔닝, 샤딩) (0) | 2025.05.12 |
[개발 일기] 2025.05.11 - Redis 만료 원리 (0) | 2025.05.11 |