제어의 역전(IoC)

- Java설정 클래스인 AppConfig가 없을 때는 클라이언트가 직접 new키워드를 사용하여 객체를 생성해서 사용함 = 클라이언트가 직접 프로그램의 플로우를 제어함

- AppConfig를 도입한 한 뒤에는, 클라이언트는 자신의 로직을 실행하지만 하고, 어떤 구현체를 사용할지, 어떤 의존관계를 가질지는 클라이언트가 아닌 외부의 AppConfig가 제어의 주도권을 가져감 = 제어의 역전

 

의존관계 주입(DI)

- 어플리케이션의 실행 시점에 외부에서 구현 객체를 생성하여, 클라이언트에 주입(생성자)하여 클라이언트와 서버 간의 의존관계가 형성되는 것

- 외부에서 의존관계를 주입해주면, 클라이언트의 코드 변경없이 프로그램의 변경이 가능함

 

컨테이너

- AppConfig 설정 클래스 처럼 제어권을 가지고, 클라이언트가 필요로 하는 구현 객체를 만들고, 의존관계를 주입해주는 것을 DI컨테이너라고 함 = Sping-Container의 역할