@Component
Annotation이 붙은 클래스를 스캔해서 Spring Bean으로 등록@AutoWired
라는 기능도 제공
@Configuration
이 컴포넌트 스캔의 대상이 된 이유도@Configuration
소스코드를 열어보면@Component
Annotation이 붙어있기 때문이다
@Configuration
@ComponentScan(
basePackages = "gwshin.core", // default: 현재 ComponentScan이 붙은 클래스의 위치
basePackageClasses = AutoAppConfig.class,
// AppConfig 유지하기 위함
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
기존의
AppConfig
와는 다르게@Bean
으로 등록한 클래스가 하나도 없다!
@ComponentScan
은 @Component
가 붙은 모든 클래스를 Spring Bean으로 등록MemberServiceImpl
클래스 -> memberServiceImpl
@Component("memberService2")
@Autowired
를 지정하면, 스프링 컨테이너가 자동으로 해당 Spring Bean을 찾아서 주입getBean(MemberRepository.class)
와 동일하다고 이해하면 된다.