🍀 Spring

IoC: Inversion of Control

의존성

A 클래스 안에 B 클래스의 인스턴스를 만들어 사용하는 상황
→ A는 B에 의존적이다.
notion image

정의

프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것

목적 및 특징

  • 객체가 자신이 사용할 객체를 생성하거나 선택하지 않는다.
  • 객체는 자신이 어떻게 생성되고 사용되는지 알 수 없다.
  • 모든 객체는 제어 권한을 위임받은 특별한 객체에 의해 만들어지고 사용된다.

장점

  • 의존성 감소
    • 모듈을 쉽게 교체 가능한 구조로 만들어 변화에 대응 가능
    • 유지 보수 용이
  • 체계적이고 효율적인 의존상태 관리
  • 재사용성 높아짐
  • 테스트 용이
  • 코드양 감소
  • 인터페이스 기반 설계가 가능

단점

예시

Spring Container(= IoC Container)

  • 개발자에게 위임받은 제어권을 사용하여 의존성 관리 / 인스턴스 생성, 메모리 해제
  • 프레임워크(Spring Container ~= ApplicationContext)가 이 역할을 함