개발 일지/Spring

[Spring] Component Scan

미숫가루설탕많이 2023. 2. 7. 11:09

 스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 즉, @Controller, @Component 등 애너테이션을 붙인 클래스들을 스캔하여 빈으로 등록해주는 것이다.

 

 자바 코드에 @Bean이나 XML 등의 설정 정보에 등록할 스프링 빈을 직접 작성해도 되지만, 이렇게 수작업으로 진행하는 경우 설정 정보가 커지거나 누락되는 등 문제가 발생할 수 있기 때문에 컴포넌트 스캔은 매우 유용한 기능이다.

 

 

 

 

주의할 점

 

기본적으로 @Component 애너테이션을 빈 등록 대상으로 포함하며, @Controller나 @Service 등은 @Component를 포함하고 있기 때문에 같이 인식한다. 여기서 주의할 점은 @Configuration 또한 @Component 애너테이션이 붙어있기 때문에 기존에 작성한 AppConfig이 있다면 정상적으로 작동되지 않는다.

 

 새 프로젝트로 진행할 경우엔 문제가 되지 않으며, @Configuration 설정이 된 파일이 있을 때는 아래 코드를 추가하면 된다.

@ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class))

 

 

 

 

사용

 

  • basePackages
    : 탐색할 패키지의 시작 위치를 지정하고, 해당 패키지부터 하위 패키지 모두 탐색한다. 만약 지정하지 않으면 @ComponentScan()이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다.

  • includeFilters
    : 컴포넌트 스캔 대상을 추가로 지정

  • excludeFilters
    : 컴포넌트 스캔에서 제외할 대상을 지정

  • @Component
    : 컴포넌트 스캔에서 사용

  • @Controller & @RestController
    : 스프링 MVC 및 REST 전용 컨트롤러에서 사용

  • @Service
    : 스프링 비즈니스 로직에서 사용된다. 특별한 처리를 하지 않으며, 개발자들이 비즈니스 계층을 인식하는 데 도움이 된다.

  • @Repository
    : 스프링 데이터 접근 계층으로 인식하고 데이터 계층의 예외를 스프링 예외로 변환

  • @Configuration
    : 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처

'개발 일지 > Spring' 카테고리의 다른 글

[Spring MVC] Spring MVC  (0) 2023.02.13
[Spring] 의존관계 주입 방법  (0) 2023.02.07
[Spring] 빈  (0) 2023.02.06
[Spring] 스프링 컨테이너  (0) 2023.02.06
[Spring] Spring Boot  (0) 2023.02.03