DI(Dependency Injection)❓
Dependency Injection의 약자로 의존성 주입이라고 함
DI(의존성 주입)이란 필요한(의존하는) 객체를 직접 생성하지 않고 외부에서 주입하는 방식을 뜻함.
즉, 필요한 객체를 외부에서 주입하는 것이라고 이해하면 된다.
DI 방식은 프로그램의 유연성을 확보하고 객체 간의 결합도를 낮출 수 있게 해준다.
IoC(Inversion of Control)❓
Inversion of Control의 약자로 제어의 역전이라고 함
프로그램의 제어권을 개발자가 컨트롤하는 것이 아니라 외부에서 컨트롤하는 방식
제어의 주체가 개발자에서 스프링으로 바뀐 것이라고 이해하면 된다.
IoC 방식은 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.
IoC 컨테이너의 객체를 스프링에서는 빈(Bean)이라고 한다.
스프링은 Ioc 컨테이너에서 프로그램에 필요한 객체를 싱글턴 형태로 만든다.
즉 loC 컨테이너의 빈은 한 번 쓰고 버려지는 것이 아니라 계속해서 재사용된다.