컴포넌트 스캔과 의존관계 자동 주입 시작하기

컴포넌트 스캔

설정 정보가 없어도 자동으로 스프링 빈 등록

@Autowired

의존 관계 자동 주입

//AutoAppConfig 클래스

@Configuration
/*
	@Configuration
			자바 클래스를 통해 빈 정의 (@Bean이 적용된 인터페이스를 빈으로 생성하고 관리)
		@Bean이 붙은 클래스가 없는 경우
			스프링 애플리케이션의 설정 정보 제공
*/

@ComponentScan(
				excludeFilters = @Filter(type = FilterType.ANNOTATION,
																classes = Configuration.class))
public class AutoAppConfig {
		/*
			@Bean으로 등록한 클래스가 하나도 없다
		*/
}

/*
	@ComponentScan
		스캔된 컴포넌트를 찾아 빈으로 등록
	excludeFilters (@ComponentScan의 속성 값)
		스캔 대상에서 제외할 빈을 필터링하기 위한 속성 값
	@Filter
		빈 필터를 정의하는 어노테이션
	type (@Filter의 속성 값)
		필터의 유형을 지정한다.
	type = FilterType.Annotation
		어떤 어노테이션이 붙은 클래스를 대상으로 필터링한다.
	classes (@Filter의 속성 값)
	classes = Configuration.class
		@Configuration이 붙은 클래스를 제외할 대상으로 지정		
*/

@Configuration이 붙은 클래스를 제외하는 이유

각 클래스에 @Component 붙이기

각 클래스가 컴포넌트 스캔의 대상이 되어야 한다.