스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 즉, @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 |