🍪스프링에서 중요한 개념 중 하나인 DI를 이해한다!
직역하면 '의존 주입'이라는 뜻으로, 한 객체에서 다른 객체를 사용하는 것을 '의존한다'고 표현한다.
A 객체가 B 객체를 이용한다 = A 객체는 B 객체의 기능에 의존한다.
다른 객체를 사용하는 방법은 2가지가 있다.
1. A 객체 안에서 B 객체를 직접 생성하는 방법
2. A 객체의 setter()나 constructor()를 사용하여 외부에 생성된 B 객체를 주입하는 방법
여기서, 2번째 방법을 사용하는 것을 '의존 주입'이라고 표현한다.
B 객체를 생성하고, 라이프 사이클을 관리하고, A 객체의 의존 주입을 관리해주는 것을 '컨테이너'라고 한다.
개발자가 직접 의존성을 주입하거나 객체를 관리하지 않고 컨테이너가 관리해주는 것을 객체의 제어권이 넘어갔다고 표현하며 '제어의 역전'이라고 말한다.
스프링이 바로 IoC 컨테이너의 역할을 수행한다.
스프링에서 DI를 사용하는 방법은 3가지이다.
1. 빈 설정 xml
2. 자바 코드를 이용
3. 애너테이션 이용
스프링 부트는 xml 사용을 최소화하기 때문에 2,3번 방법의 의존 주입을 많이 사용한다.
다음 포스트에서 코드를 살펴보며 의존 주입을 확인해보자!