관리 메뉴

개발하는 동그리

[Spring] 컴포넌트 스캔 본문

IT 정보/Spring

[Spring] 컴포넌트 스캔

개발하는 동그리 2022. 6. 20. 02:47
반응형

컴포넌트 스캔 (ComponentScan) - 자동 등록

  • 등록할 스프링 빈이 너무 많을 때 @Bean
  • 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능 제공
  • 의존관계를 자동으로 주입하는 @Autowired 기능도 제공
  • AppConfig에 @Bean ( 설정정보, 의존관계 )을 등록하지 않는다..
  • @ComponentScan은 전체적으로 스캔을 해서 @Component 애너테이션이 붙은 클래스를 다 자동으로 스프링 빈으로 등록해준다. 
  • ComponentScan을 사용할 경우 자동으로 빈 등록은 가능하지만, 의존관계 주입할 수가 없다. ⭐⭐⭐⭐⭐
  • 그래서 생성자에 @Autowired를 붙여서 의존관계를 주입해준다.
    •  이때 메서드 명의 맨 앞글자는 소문자로 들어간다. 
    • Autowired를 지정하면 스프링 컨테이너 내부에서 같은 타입을 조회하고 해당 스프링 빈을 주입해준다. 

 

컴포넌트 스캔 기능 

  • basePackages = "경로"  : 하위에 있는 모든 Component 조회
  • 탐색 위치를 지정하지 않으면 default 값은 ComponentScan을 입력된 클래스의 패키지가 시작 위치가 된다.
    • 프로젝트 최상단에 두면 해결된다. 
  • excludeFilters = 제외하고 싶은 class 입력

 

컴포넌트스캔 기본 대상

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

 

컴포넌트 스캔에서 중복 시

  • 자동 빈 등록 vs 자동 빈 등록 : ConflitingBeanDefinitionException 오류 발생 
  • 수동 빈 등록 vs 자동 빈 등록 : 수동 빈이 자동 빈을 오버 라이딩해서 우선시된다.

 

 

 

반응형