구성 요소 스캔 및 자동화된 종속성 주입 시작하기
- 기존에는 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 빈을 자동으로 찾아 삽입합니다.

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