@ComponentScan 이란 ?

Legday_Dev·2023년 9월 25일
0

Spring

목록 보기
13/14
post-thumbnail

스프링에서 스프링 빈을 등록할려면 @Bean 어노테이션으로 appConfig 파일에 직접 등록해줘야 한다. 하지만 @Component @ComponentScan 어노테이션을 사용하면 편리하게 빈 등록이 가능하다

@CompoeneScan

컴포너트 스캔은 이름 그대로 @Component 어노테이션이 붙은 클래스를 찾아서 스프링 빈에 등록해주는 기능을 가진다. 단, @Configuration 어노테이션이 붙은 설정 정보도 등록이 되기 때문에 filter 기능을 써야 한다.

  • @Configuration 이 붙은 클래스 말고도 사용자가 스프링 빈을 등록하고 싶지 않은 클래스도 추가 가능하다.

    @ComponentScan(
       excludeFilters = @Filter(type = FilterType.ANNOTATION, 
                                classes =Configuration.class)
    )                     
  • 스프링 빈의 기본 이름은 클래스명에서 맨 앞글자만 소문자로 바꿔서 등록한다.

    • MemberServiceImpl -> memberServiceImpl
    • 빈 이름을 따로 지정하고 싶으면 @Component("name") 으로 등록하면 된다.
  • 스캔 대상의 범위의 디폴트 값은 @CompoenetScan 이 붙은 클래스의 패키지가 시작 위치가 된다.

  • 별도의 스캔 범위를 지정하고 싶으면 basePackages 옵션을 사용하면 된다.

    @CompoenetScan(basePackages="hello.core")
  • 가장 좋은 방법은 @ComponentScan 이 붙은 클래스를 프로젝트 최상단에 두는 것이다.

  • 컴포넌트 스캔은 @Component 뿐 만 아니라 아래와 같은 어노테이션이 붙은 클래스도 등록한다.

    • @Controller : 스프링 MVC 컨트롤러에서 사용
    • @Service : 스프링 비즈니스 로직에서 사용
    • @Repository : 스프링 데이터 접근 계층에서 사용
    • @Configuration : 스프링 설정 정보에서 사용
profile
백엔드개발자

0개의 댓글