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

도도한 생쥐님의 프로필 이미지
도도한 생쥐

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

프로젝트 구조 설명2 - 설정

component scan 범위 지정관련 문의 드립니다.

해결된 질문

작성

·

334

0

service, repository interface에 직접 Bean 으로 DI 를 위하여 scan 범위를 controller 만 잡는다는 의미를 정확하게 이해하고 싶어서요.

scan 범위를 제거한다면 
@service, @repository 에 의해서 모든 서비스와 레포지토리가 대상이 되고 Spring container에 등록은 되지만

수동으로 등록하는 Bean(MemoryConfig)에 의해
ItemService와 ItemRepository에 주입되어 타입이 정해지는걸로 이해하는데요.

scan 범위를 지정한것은 불필요한 service, repository가 bean으로 등록되는것을 막기위한 효율의 측면인가요?

답변 1

0

안녕하세요. 룔님, 공식 서포터즈 y2gcoder입니다.

생각하신 바가 맞습니다.

아시다시피 스프링의 빈 등록 방법은 크게 @Component scan을 이용한 자동등록과 @Configuration + @Bean을 통한 수동 등록이 있습니다. 해당 강의에서는 다양한 DB 접근 기술을 사용하고, 점차적으로 코드를 현대 방식, 혹은 실무 방식에 맞게 바꿔나가고 있습니다. 영한님은 혹시나 수강생분들이 이전 강의 부분 코드를 다시 보실 때를 대비해 이전 코드들을 그대로 둔 채로 새로 코딩하는 방식을 취하고 계십니다.

만약 컴포넌트 스캔으로 모든 빈들을 자동 등록한다면 이전 코드와 새 코드 간 겹치는 부분으로 인한 충돌로 정상작동하지 않을 수 있기 때문에 이번 강의에서 바뀌지 않는 controller 부분만 컴포넌트 스캔으로 자동 등록해주고, 나머지 들은 빈으로 수동등록해주고 있습니다.
감사합니다.

도도한 생쥐님의 프로필 이미지
도도한 생쥐

작성한 질문수

질문하기