작성
·
132
·
수정됨
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요 좋은 강의 잘 듣고 있습니다!!
이번 강의를 들으면서
@EnableConfigurationProperties(MyDataSourcePropertiesV1.class)를 통해
MyDataSourcePropertiesV1.class 클래스를
스프링 빈으로 등록해야지 외부 설정을 읽어서 해당 클래스에 바인딩하고 Config에서는 그걸 주입 받아 DataSource에 주입하는 걸로 이해를 했습니다.
여기서 저는 단순히 스프링 빈으로 등록하는 거라면
@Import를 사용하거나
MyDataSourcePropertiesV1.class에 @Component를 붙여서 컴포넌트 스캔 대상이 되도록 하는 등의 방법으로 해도 잘 동작하는게 아닐까? 라는 생각에
2가지 다 사용해서 테스트를 진행했는데 별문제가 없었습니다.
분명히 @EnableConfigurationProperties을 만든 이유가 있을듯한데 저의 짧은 지식으로는 잘 모르겠습니다.
@ConfigurationPropertiesScan은
@ConfigurationProperties가 붙은 클래스를 마치 컴포넌트 스캔과 같이 간편하게 스프링 빈으로 등록할 수 있다는 장점이 보이지만
@EnableConfigurationProperties 이 친구는 정말 모르겠습니다
답변 1
2
해결했습니다
@ConfigurationPropertiesScan or @EnableConfigurationProperties를 사용하지 않고 그냥 일반 빈으로 등록하면
ConfigurationPropertiesBindingPostProcessor에서
바인딩 및 타입 검사를 하지 못해서 애플리케이션이 오류가 발생하네요
이전 테스트에서는 @ConfigurationPropertiesScan이 있어서 ConfigurationPropertiesBindingPostProcessor
가 동작했나 봅니다