인프런 커뮤니티 질문&답변

bae jewoo님의 프로필 이미지

작성한 질문수

스프링 부트 - 핵심 원리와 활용

외부설정 사용 - @ConfigurationProperties 시작

MyDataSourcePropertiesV1 스프링 빈으로 등록

작성

·

131

·

수정됨

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
안녕하세요 좋은 강의 잘 듣고 있습니다!!

이번 강의를 들으면서
@EnableConfigurationProperties(MyDataSourcePropertiesV1.class)를 통해
MyDataSourcePropertiesV1.class 클래스를
스프링 빈으로 등록해야지 외부 설정을 읽어서 해당 클래스에 바인딩하고 Config에서는 그걸 주입 받아 DataSource에 주입하는 걸로 이해를 했습니다.

여기서 저는 단순히 스프링 빈으로 등록하는 거라면
@Import를 사용하거나
MyDataSourcePropertiesV1.class에 @Component를 붙여서 컴포넌트 스캔 대상이 되도록 하는 등의 방법으로 해도 잘 동작하는게 아닐까? 라는 생각에
2가지 다 사용해서 테스트를 진행했는데 별문제가 없었습니다.

분명히 @EnableConfigurationProperties을 만든 이유가 있을듯한데 저의 짧은 지식으로는 잘 모르겠습니다.

@ConfigurationPropertiesScan은

@ConfigurationProperties가 붙은 클래스를 마치 컴포넌트 스캔과 같이 간편하게 스프링 빈으로 등록할 수 있다는 장점이 보이지만

@EnableConfigurationProperties 이 친구는 정말 모르겠습니다



답변 1

2

bae jewoo님의 프로필 이미지
bae jewoo
질문자

해결했습니다
@ConfigurationPropertiesScan or @EnableConfigurationProperties를 사용하지 않고 그냥 일반 빈으로 등록하면

ConfigurationPropertiesBindingPostProcessor에서
바인딩 및 타입 검사를 하지 못해서 애플리케이션이 오류가 발생하네요

이전 테스트에서는 @ConfigurationPropertiesScan이 있어서 ConfigurationPropertiesBindingPostProcessor
가 동작했나 봅니다