Spring[컴포넌트 스캔]
컴포넌트 스캔
컴포넌트 스캔이란?
스프링 프레임워크에서 사용되는 기능 중 하나로,
애플리케이션에서 사용할 빈(Bean)들을 찾아서 등록하는 프로세스를 말합니다.
스프링이 관리하는 빈은 주로 @Component
및 그와 관련된 어노테이션을 사용하여 정의합니다.
사용 방법
주로 컴포넌트 스캔은 이름 그대로 @Component
어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록합니다.
그러므로 등록할 클래스에 @Component를 붙여 주면 됩니다.
@Congiguration이 컴포넌트의 스캔 대상이 될 수 있습니다.
등록 예시
1
2
3
4
@Component
public class MemoryBeanRepository implements BeanRepository {
...
}
1
2
3
4
5
6
7
8
9
@Component
public class BeanServiceImpl implements BeanService {
private final BeanRepository beanrepository;
@Autowired
public BeanServiceImpl(BeanRepository beanrepository){
....
}
...
}
- @Autowired는 의존관계를 자동으로 주입해준다.
컴포넌트 스캔, 자동 의존관계 주입 동작
- @ComponentScan [사진]
- @ComponentScan은 @Component가 붙은 모든 클래스를 스프링 빈으로 등록한다.
- 스프링 빈의 기본 이름은 클래스명을 사용하면서, 맨 앞글자만 소문자를 사용한다.
- @Autowired 의존관계 자동 주입 [사진]
- 생성자에 @Autowired를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다.
- 기본 조회 전략은 타입이 같은 빈을 찾아서 주입한다. [사진]
- 생성자에 파라미터가 많아도 다 찾아서 자동으로 주입 한다.
컴포넌트 스캔 기본 대상
대상
- @Component
- 컴포넌트 스캔에서 사용
- @Controller
- MVC Controller에서 사용
- @Service
- 비즈니스 로직에서 사용
- @Repository
- 데이터 접근 계층에서 사용
- @Configuration
- 스프링 설정 정보에서 사용
결론
이처럼 컴포넌트 스캔은 스프링에서 빈을 자동으로 찾아 등록하는 기능으로, 주로 @Component 어노테이션을 사용하여 클래스를 스프링 빈으로 등록합니다.
또한 의존성 주입은 @Autowired 어노테이션을 통해 자동으로 이루어집니다.
컴포넌트 스캔은 @ComponentScan을 통해 특정 패키지 내에서 빈을 찾아 등록하며, @Controller, @Service, @Repository, @Configuration 등의 어노테이션도 대상으로 합니다.
이를 통해 애플리케이션의 구성을 유연하게 관리하고, 의존성 주입을 자동화하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.
This post is licensed under CC BY 4.0 by the author.