Spring

[Spring] IoC, DI

parangofsky 2026. 1. 28. 23:29

오늘은 스프링의 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으로 등록해서 컨테이너에서 관리합니다.
다음 포스트에서는 컨테이너가 빈을 생성하는 과정에 대해서 정리해보겠습니다.