728x90
반응형
@ComponentScan
@Component 애노테이션이 붙은 클래스를 자동으로 스프링 빈으로 등록합니다.
해당 애노테이션이 붙어있는 클래스부터 하위로 탐색하면서 @ComponentScan의 대상을 찾습니다
그래서 @ComponentScan은 프로젝트가 실행되는 최상단에 두는 것이 좋습니다.
스프링에서는 애플리케이션이 실행되는 {프로젝트이름}Application클래스 @SpringBootApplication을 확인해보겠습니다.
@SpringBootApplication 내부에 @ComponentScan이 있는 것을 확인 할 수 있습니다.
애플리케이션이 실행되면서 모든 @ComponentScan의 대상을 찾아서 빈으로 등록하고 @Autowired를 찾아 의존관계도 자동으로 주입해줍니다.
@SpringBootApplication에 @ComponentScan이 있는데 자바는 애노테이션의 상속을
지원하지 않기 때문에 이 기능은 스프링이 지원해주는 기능임을 인지해야합니다.
@ComponentScan 예시
@Component //@ComponentScan의 대상이 됩니다.
public class TodoServiceImpl implements TodoService{
private final TodoRepository todoRepository;
@Autowired
//TodoRepository에도 @Component를 써주어서 @ComponentScan 대상이 되게 하면
//@Autowired를 통해 스프링이 자동으로 의존관계를 주입합니다.
//생성자를 통한 의존관계를 주입합니다.
public TodoServiceImpl(TodoRepository todoRepository){
this.todoRepository = todoRepository
}
}
@ComponentScan의 대상 종류
- @Component
- @Controller
- @Service
- @Repository
- @Configuration
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] 관습적인 추상화 (2) | 2022.08.09 |
---|---|
[Spring] 객체 지향 설계의 다섯 가지 기본 원칙 - SOLID (0) | 2022.07.15 |
[Spring] @Configuration과 Singleton By CGLIB (0) | 2022.07.11 |
[Spring] Singleton 사용 시 필드 변수 사용 주의❗ (0) | 2022.07.11 |
[Spring] AppConfig을 통한 관심사 분리와 리팩터링 (0) | 2022.07.11 |