인프런 강의 < 스프링 핵심 원리 - 기본편 > 정리
@Bean을 이용해 등록하기 힘들어진다.컴포넌트 스캔을 이용한다.@Autowired를 이용해서 자동으로 주입 시켜준다.@Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다.@Configuration
@ComponentScan(
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) /// @Configuration 애노테이션 제외
)
public class AutoAppConfig {
}

@Component가 붙은 모든 클래스를 스프링 빈으로 등록핳ㄴ다
@Autowirde를 지정하면, 스프링 컨테이너가 알아서 해당 스프링 빈을 주입한다.getBean(MemberRepository.class)와 동일하다.
@ComponentScan(
basePackages = "hello.core.member"
)
basePackages 키워드를 통해서 탐색할 패키지의 시작 위치를 정할 수 있다AppConfig 같은 설정을 최상위 패키지에 만들어서 하위 패키지를 모두 탐색할 수 있도록 한다.@Component 뿐만 아니라 추가적으로 스캔한다.@Controller: 스프링 MVC 컨트롤러에서 사용@Service: 스프링 비즈니스 로직에서 사용@Repository: 스프링 데이터 접근 계층에서 사용@Configuration: 스프링 설정 정보에서 사용ConflictingBeanDefinitionException 예외 발생@Component
public class MemoryMemberRepository implements MemberRepository {}
@Configuration
@ComponentScan(
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes =
Configuration.class)
)
public class AutoAppConfig {
@Bean(name = "memoryMemberRepository")
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
< 자료 출처: 스프링 핵심 원리 - 기본편 >