초웹개_스프링5_DI(4)

네코·2022년 5월 3일
0

초웹개

목록 보기
4/10
post-thumbnail

컴포넌트 스캔

설정 클래스에 빈으로 등록하지 않아도 @Component을 통해 원하는 클래스를 빈으로 등록할 수 있음.

  • 빈 이름을 설정하지 않으면 클래스의 첫 대문자를 소문자로 바꾼 것이 빈 이름으로 등록
  • @Component("이름") 하면 해당 이름으로 등록

@Component 붙인 클래스를 스프링 빈으로 등록하려면 설정 클래스에서 @ComponentScan 적용

간단해졌다.
basePackages 항목으로 spring만 존재하는데 프로젝트 내 component를 탐색할 패키지를 지정한 것

  • ComponentScan 애노테이션에서 excludeFilters 속성을 사용하면 스캔 시 특정 대상을 자동 등록 대상에서 제외할 수 있음. 여러 방법 있는데 있구나 정도만 하고 넘어감,,

  • 기본 스캔 대상

    • @Component
    • @Controller
    • @Service
    • @Repository
    • @Aspect
    • @Configuration

컴포넌트 스캔에 따른 충돌 처리

  1. 빈 이름 충돌
    서로 다른 패키지에 동일한 이름의 클래스가 존재하고 두 클래스 모두 @Component 붙임.
    이 상태에서 ComponentScan에 두 패키지 포함하면 익셉션 발생
  2. 수동 등록한 빈과 충돌
    @Component로 등록한 빈의 이름과 설정 파일에서 등록한 빈의 이름이 같은 경우
    수동 등록한 빈이 우선된다.

0개의 댓글