어제 배운 IoC, DI와 오늘 배운 @Component, @ComponentScan, @Autowired를 연관지어 정리해보자.
스프링 빈 즉, 스프링이 컨테이너에 담아두는 객체로 등록하는 방법은 크게 두 가지가 있다.
1. @Component
2. @Configuration + @Bean
=> 사실상 Configuration 자체에 Component가 포함되어 있기에 1 방법이 메인이다.
그럼 @ComponentScan은 무엇일까?
말 그대로 컴포넌트를 스캔한다.
즉, 스프링은 프로젝트를 스캔하며 '컴포넌트 어디에 적어놨니?'라고 물으며 자신의 컨테이너에 객체를 담는다.
사실 알다시피 컴포넌트 스캔은 원래 xml에서 하던 일이다.
하지만 spring은 이 과정을 알아서 해준다. 역시 똑똑이...ㅎㅎ
마지막으로 @Autowired란 무엇일까?
@Autowired는 DI와 연관이 있다.
어제 우리가 정리한 것처럼 IoC(Inversion of Control)가 있기에 DI(Dependency Injection)는 필요하다.
즉 의존성 주입 과정이 필요하다.
1. 생성자로 주입
2. 필드로 주입
3. Setter로 주입
우리는 필요한 의존 객체의 '타입'에 해당하는 빈을 컨테이너에서 찾아서 주입해야 한다.
'야 너 이거 꺼내줄게~'라고 생각하면 쉽다.!!
결국 IoC, DI와 오늘 배운 @Component, @ComponentScan, @Autowired를 모두 연관지어 정리해보면,
IoC를 통해서 우리는 스프링한테 객체의 생성주기와 호출에 대한 제어권을 넘김
=> 스프링이 그 객체를 인식하기 위해서 @Component를 달아 놓음
=> @ComponentScan을 하며 스프링 빈 객체를 싱글톤 패턴으로 생성한 후 스프링 컨테이너에 담는다.
=> @Autowired를 달아서 의존성을 주입
오늘도 스프링 뿌셨다...휴~
'프레임워크(Framework) > Spring' 카테고리의 다른 글
DTO는 왜? 언제 사용할까? (0) | 2024.07.22 |
---|---|
Setter 왜 쓰는지 알고 사용하자! (0) | 2024.07.20 |
스프링 Core? (1) | 2024.07.16 |
SOLID? (0) | 2024.07.16 |
[주문을 JAVA]KPT 회고 (0) | 2024.07.15 |