부품 스캔

구성 요소 스캔 및 자동화된 종속성 주입 시작하기

  • 기존에는 Spring Beans를 등록할 때 Java 코드에서 @Bean을 통해 Spring Beans가 구성 정보에 직접 포함되거나 XML로 나열됩니다.
  • 해당 Spring Bean이 수십, 수백 개일 경우 일일이 등록하기 너무 어려움 -> 자동으로 Spring Bean을 등록하는 컴포넌트 스캔 기능 제공
  • 의존성을 자동으로 주입하는 @Autowired 기능 제공

@ComponentScan 사용

  • 먼저 구성 정보에 @ComponentScan을 추가합니다.
    • @ComponentScan은 @Component 첨부 클래스를 스캔하여 자동으로 Spring Bean으로 등록합니다.
  • 기존 구성 정보와 달리 @Bean을 통해 클래스를 등록할 필요가 없습니다.
    • 기존 설정 정보에서는 @Bean에 대한 설정 정보를 생성하고 의존성을 직접 지정했지만 @Autowired는 자동으로 의존성을 주입한다.
@ComponentScan
public class AutoAppConfig {
	//@Bean을 통해 추가해줄 필요가 없다.
}


//@Component와 @Autowired를 추가해준다.

@Component
public class MemberServiceImpl implements MemberService {
		private final MemberRepository memberRepository;
        
		@Autowired
		public MemberServiceImpl(MemberRepository memberRepository) {
		this.memberRepository = memberRepository;
	}
}


  • @ComponentScan은 @Component로 주석이 달린 모든 클래스를 Spring Bean으로 등록합니다.
  • (스프링 빈의 기본 이름은 클래스 이름을 사용하지만 첫 글자만 소문자이다.)


  • 생성자에 @Autowired를 지정하면 Spring 컨테이너가 적절한 Spring 빈을 자동으로 찾아 삽입합니다.


  • 생성자에 많은 매개변수가 있더라도 모두 자동으로 찾아서 삽입됩니다.

탐색 위치 및 기본 스캔 대상