2.스프링 컨테이너
1. 스프링 컨테이너, Spring Container
It is a process whereby objects define their dependencies (that is, the other objects they work with) only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse (hence the name, Inversion of Control) of the bean itself controlling the instantiation or location of its dependencies by using direct construction of classes or a mechanism such as the Service Locator pattern.
어떤 객체가 자신에게 필요한 의존성을 해결하려할 때,
개발자가 new 연산자를 통해 직접 의존성을 해결하는 것이 아닌 외부(Factory)에서 해당 의존성을 전달, 주입받을 수 있음
1-1. 의존성을 직접 생성하여 해결

1-2. 외부에서 미리 생성된 의존성을 찾아서 해결

외부란 추상적으로 스프링 컨테이너라는 애플리케이션 내 별도의 공간을 의미한다고 가정
스프링 컨테이너(Spring Container, IoC Container)
애플리케이션의 동작에 필요한 의존성을 보관, 관리하는 공간
제어의 역전, IoC(Inversion of Control)
의존성을 제어하는 방식에 있어서 해당 객체가 개발자가 직접 제어하던 방식에서 외부를 통해 제어되기 때문에 제어의 방향이 역전되었다고해서 제어의 역전이라고 함
→ 결과적으로, 두 객체(클래스) 간의 결합도가 낮아지는 효과(Loose coupled)가 있음