Spring @componentscan

alt

  • @ComponentScan에만 적용된다.
  • @Entity 스캔 또는 Spring Data Repository 스캔에는 영향을 미치지 않는다.
    • @EntityScan 및 @Enable..을 추가해야 한다
  • 검색할 패키지를 지정하면 지정한 각 클래스의 패키지가 검색된다.

  • ComponentScan 설정을 하지 않았다면 @SpringBootApplication이 정의된 곳이 base package 가 된다.


@ComponentScan ?

  • @Component, @Service, @Repository, @Controller , @Configuration 어노테이션이 부연된 Class들을 자동으로 스캔하여 Bean으로 등록 해준다.
  • 검색할 패키지를 정의하기 위해 basePackageClasses 또는 basePackages를 지정할수 있다.
  • 특정 패키지가 정의되지 않은 경우 이 주석을 선언하는 클래스의 패키지에서 찾는다.
  • @ComponentScan을 사용할 때 기본 어노테이션 (@Autowired 및 friends)이 가정된다.

검색할 패키지를 정의 : basePackageClasses 또는 basePackages

@ComponentScan(basePackages = "com.codesoom")
public class AppConfig {} 
  • basePackages 패키지 경로를 직접 적어 스캔할 위치를 지정할 수 있다.
@ComponentScan(basePackageClasses = App.class)
public class AppConfig {} 
  • basePackageClasses: Class가 위치한 곳에서부터 모든 어노테이션이 부여된 Class를 빈으로 등록
  • TypeSafe하기 때문에 basePackages 보다 사용을 추천한다.

참고


내용 더 정리하자

results matching ""

    No results matching ""