IoC 와 DI

DI

Dependency

의존이란, 한 클래스가 다른 클래스의 메서드를 실행하는 것이다. 의존 대상 클래스가 변경되면 의존하는 클래스의 ‘코드가 변경'되는 것을 의존이라고 한다.

Dependency Injection

직접적인 의존관계는 DIP 원칙을 위반하며, OCP 원칙도 지킬 수 없다. 따라서 이를 완전하게 가능케 해주는 별도의 설정자가 필요하다. 스프링에서는 별도의 설정자를 두어 내부 로직은 수정되지 않도록 하면서도 의존을 주입해준다.

IoC

스프링으로 개발을 하면 의존주입을 직접 수행하고 메인 프로그램의 실행순서를 작성하지 않게된다. 이러한 메인 실행흐름을 제어하는 것을 기본적으로는 자바의 클래스에서 main 메서드를 작성하여 실행하는 방식이었다면, 그 흐름의 주도권이 이제는 스프링이 가지게 된다. 개발자는 그 흐름에 맞추어서 어떤 클래스가 어떻게 실행될지만 작성하면 된다. 따라서 이러한 제어권을 스프링이 가져가 버린다는 의미로, IoC라는 용어를 사용한다.