@컴포넌트스캔, @컴포넌트

https://mjlee4330.144

(스프링) 스프링 컨테이너 & 콩

스프링 컨테이너 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 인터페이스는 Spring이 사용하는 컨테이너, 즉 Spring 컨테이너입니다.

에스

mjlee4330.tistory.com

위의 Spring Bean을 등록하기 위해서는 @Bean 어노테이션을 적용한 방법을 사용하거나 XML을 이용하여 설정 정보를 직접 작성한다.

꼬리표.

현장에서 사용되는 콩은 무수히 많을 텐데, 일일이 생성하여 등록하는 것은 번거로운 작업입니다.

이를 해결하는 방법은 @ComponentScan입니다.

Spring Bean은 @ComponentScan을 사용하여 구성 정보 없이 자동으로 등록할 수 있습니다.

  • 구성 정보 클래스에 @ComponentScan 주석을 적용합니다.


    코드를 작성할 필요가 없습니다.

    왜? 빈을 자동으로 등록하기 때문에
  • 빈으로 등록할 클래스에 @Component 어노테이션을 적용한다.

  • 생성자에 @Autowired 어노테이션을 적용하면 종속성이 자동으로 주입됩니다.

위와 같이 설정하면 @Component 어노테이션이 붙은 클래스를 스캔하여 Spring Bean으로 등록한다.

(이 때 빈 이름은 클래스 이름의 첫 글자만 소문자로 변경하여 사용한다.

)

탐색 위치 및 기본 스캔 대상

모든 Java 클래스를 검색하여 @Component를 찾으려면 시간이 오래 걸립니다.

따라서 필요한 시간을 줄이기 위해 검색 위치를 지정하십시오.

  • basePackages: 지정된 패키지를 검사 시작 위치로 지정합니다.

  • basePackageClasses: 지정된 클래스의 패키지를 스캔 시작 위치로 지정합니다.

  • 기본 : 아무 것도 지정하지 않으면 @ComponentScan 주석이 달린 클래스 파일 패키지가 적용됩니다.


    시작 위치로 설정합니다.

@ComponentScan(
        //AppConfig 클래스를 제외하기 위해서 작성
        excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class),
        //컴포넌트 스캔을 시작할 패키지의 위치를 설정할 수 있다.

basePackages= "hello.core", //지정한 클래스의 패키지를 스캔 시작의 위치로 설정할 수도 있다.

basePackageClasses = AutoAppConfig.class //만약 지정하지 않는다면 @ComponentScan이 붙은 설정파일의 패키지를 기본 위치로 설정한다.

)

@Component 뿐만 아니라 다음 주석도 스캔 및 탐색됩니다.

  • @Controlller : Spring MVC 컨트롤러에서 사용되며 MVC 컨트롤러로 인식된다.

  • @Service: 스프링 비즈니스 로직에서 사용
  • @Repository : Spring 데이터 액세스 레이어에서 사용되며 데이터 레이어의 예외를 Spring 예외로 변환합니다.

  • @Configuration : Spring 설정 정보에 사용되며 Spring Bean의 싱글톤을 보장한다.


위 글은 인프론 강사 김영한 강사님의 유료강의를 들으면서 요약 및 정리를 목적으로 작성되었습니다.


참조: inflearn / 김영한 / Spring 핵심 원리의 기초

www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6 %AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8

Spring 핵심 원칙 – 기초 – 인프라 | 강의

Spring 초보자는 Spring의 핵심 원리를 이해하고 예제를 통해 Spring의 기본을 탄탄하게 다질 수 있습니다.

– 강의소개 | 하부 구조

www.inflearn.com