@Configuration과 @Bean 으로 스프링 컨테이너에 수동으로 등록해줄 수 있겠지만 그럼 일일이 등록하기엔 부담이 있을 수 있다.
@ComponentScan 으로 @Component가 붙은 것들을 빈에 등록해준다!
@Configuration
@ComponentScan(
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
excludeFilters는 보면 알듯이 해당 어노테이션은 제외해주고 스캔하는건데 @Configuration도 타고 들어가면 @Component 붙어있어서 다른 AppConfig 스캔 제외 하려는 거임
빈으로 등록하는 건 알겠는데 의존관계 주입은 어떻게 할것인가~?!
해당 @Component가 붙어있는 클래스의 생성자에 @Autowired로 컴포넌트에 의존관계를 주입해줘야 한다!
아래 코드 보셈. @Autowired 붙혀주면 스프링이 의존관계에 맞는 것을 자동으로 주입시켜줌!
@Component
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Override
public void join(Member member) {
memberRepository.save(member);
}
@Override
public Member findMember(Long memberId) {
return memberRepository.findById(memberId);
}
}
다음은 사진과 함께 컴포넌트 스캔 방식을 자세하게 알아보겠음!

@Component 스캔이 @Component 가 붙은 모든 클래스를 스프링 빈으로 등록하는데,
빈 이름은 클래스의 이름에서 맨 앞글자만 소문자가 되는것이 특징이네!!