컴포넌트 스캔#
이전 강의들에서는
@Bean등을 통해서 직접 스프링 빈을 등록함 (귀찮음)설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 설정 정보에
@ComponentScan을 붙여주기만 하면 됨
컴포넌트 스캔은 이름 그대로 @Component 어노테이션이 붙은 클래스들을 스캔해서 스프링 빈으로 등록
@Autowired를 사용하면, 생성자에서 여러 의존관계도 한번에 주입 가능
순서
- @ComponentScan

@ComponentScan은@Component가 붙은 모든 클래스를 스프링 빈으로- 빈 이름 기본 : 앞글자만 대문자로 MemberServiceImpl => memberServiceImpl
@Component("name")으로 직접 이름 지정도 가능
- 의존관계 자동 주입

- 생성자에
@Autowired를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입 - 파라미터가 많아도 다 찾아서 주입해줌
탐색 위치, 기본 스캔 대상#
탐색 위치 지정
@ComponentScan(
basePackages = "hello.core", //배열도 가능
}지정하지 않으면, @ComponentScan 이 붙은 클래스의 패키지가 시작 위치가 됨
설정 정보 클래스의 위치를 프로젝트 최상단에 두는걸 권장
@Controller: 스프링 mvc 컨트롤러로 인식@Repository: 데이터 접근 계층으로 인식 =>@Configuration: 설정 정보로 인식, 싱글톤을 위한 추가 처리@Service: 개발자들에게 알려주는용도 ???
충돌#
컴포넌트 스캔시 같은 빈을 등록하면?
case 1 : 자동 빈 등록 vs 자동 빈 등록 case 2 : 자동 빈 동록 vs 수동 빈 등록
자동 vs 자동#
- 에러발생
ConflictingBeanDefinitionException
수동 vs 수동#
수동 등록 빈이 우선권을 가짐 (오버라이딩) *스프링 부트에서는 오류발생! *