Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 2.23 KB

IoC&DI.md

File metadata and controls

33 lines (27 loc) · 2.23 KB

IoC(Inversion of Control)

  • 제어의 역전, 프로그램의 제어 흐름 구조가 바뀌는 것.
  • 일반적으로 main() 메소드부터 프로그램의 각 오브젝트가 다른 오브젝트를 호출하며 프로그램의 흐름을 결정한다.
  • 이와 다르게 오브젝트가 자신이 사용할 오브젝트를 정하지 않고 위임하는 것이 IoC이다.

라이브러리 vs 프레임워크

  • 라이브러리는 라이브러리를 사용하는 애플리케이션 코드가 직접 흐름을 제어한다.
  • 프레임워크는 반대로 어플리케이션 코드가 프레임워크에 의해 사용된다.
  • 즉 어플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작한다.

Spring에서의 IoC

  • 객체가 자신과 함께 작동하는 객체를 생성자, 팩토리 메소드 인자, 프로퍼티로만 받는 프로세스가 IoC이다.

DI (Dependency Injection)

  • 의존성 주입
  • 객체간 의존성을 자신이 아닌 외부에서 주입하는 개념.
  • 의존성이란 객체와 객체의 결합 관계이다.
  • A 객체에서 B 객체를 사용한다면 A 객체 내부에서 new로 B 객체를 생성하는데 이를 의존 관계라 한다.
  • 즉 객체의 인스턴스를 외부에서 생성 받는 것을 의존성 주입이라한다.
  • 제어권이 프레임워크로 넘어갔기 때문에(IoC) DI의 사용이 가능하다.

Spring의 DI 방법들

  1. Constructor를 통한 의존성 주입
  2. Setter를 통한 의존성 주입
  3. @Autowired 어노테이션을 통한 의존성 주입
    • setter와 같은 역할을 자동으로 수행한다.
  • Immutable Object를 생성하기 위해 생성자를 통한 의존성 주입을 권장하는 편이다.

참고