오늘은 스프링의 IoC, DI에 대해서 설명해보겠습니다.
1. IoC
제어의 역전이라고도 하며, 객체의 주도권이 개발자 ---> 스프링으로 넘어간 것입니다.
즉, 개발자가 하나하나 코드를 책임지지 않아도 된다는 것!
개발자
class OrderService {
private final PaymentService paymentService = new PaymentService();
}
스프링
class OrderService {
private final PaymentService paymentService;
public OrderService(PaymentService paymentService) {
this.paymentService = paymentService;
}
}
--> 객체 생성을 스프링이 해줌.
2. DI 의존성 주입
객체가 필요한 다른 객체를 직접 만들지 않고, 외부에서 넣어주는 것. (여기서 외부라 함은 스프링이다.)
IoC 개념 안에 DI(일종의 방법, 기법) 가 있다고 보면 된다.
장점
1. 결합도 낮아진다.
2. 테스트 쉬워진다. (Mock)
3. 객체 생성, 관리 중복 제거
주입 방식
1. 생성자 주입
2. Setter 주입
3. 필드 주입(@Autowired)
스프링은 객체들을 Bean으로 등록해서 컨테이너에서 관리합니다.
다음 포스트에서는 컨테이너가 빈을 생성하는 과정에 대해서 정리해보겠습니다.
'Spring' 카테고리의 다른 글
| [Spring] Spring WebFlux와 Spring MVC - 1 (0) | 2026.02.11 |
|---|---|
| [Spring] controller에서 repository를 참조하는 코드를 짜면? (0) | 2026.02.02 |
| [Spring] 필터와 인터셉터 (0) | 2026.01.31 |
| [Spring] 컨테이너가 빈을 생성하는 과정 (0) | 2026.01.29 |
| [Spring/JPA] @Transactional을 활용한 엔티티 수정 방식 비교 (0) | 2026.01.19 |