[Spring] IoC(Inversion of Control)

·2022년 10월 11일
0

Spring

목록 보기
3/24
post-thumbnail

IoC(Inversion of Control)

IoC의 정의

제어의 반전, 일종의 규약, 원칙

  • 애플리케이션 흐름(코드의 흐름)을 제어하는 주도권이 뒤바뀐 것 -> 주도권은 Ioc 컨테이너가 가진다

    • 오브젝트 생성, 오브젝트 생명 주기 관리, 메서드 수행 등의 행위를 제어
    • 일반적인 프로그램은 이러한 행위를 프로그램 스스로 수행하지만 IoC를 적용한다는 것은 또 다른 제 3자가 수행한다는 것을 의미한다.
  • 의존 객체를 직접 만들어 사용하는 것이 아니라, 주입 받아 사용하는 방법

💡 개발자가 객체를 생성하고 관리하는 권한이 스프링 프레임워크(Ioc 컨테이너)로 넘어가는 것.

IoC의 특징

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

IoC의 장단점

장점

  • 인터페이스 기반 설계가 가능
  • 컴퍼넌트 재사용성 증가
  • 체계적이고 효율적인 의존상태 관리

단점

  • 역제어 구조로 코드를 이해가 어렵다.

스프링 IoC 컨테이너

  • Ioc를 구현하는 프레임워크로 객체를 관리하고, 객체의 생성을 책임지고, 의존성을 관리하는 컨테이너
  • 빈 설정 소스로부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다.
  • POJO 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 POJO의 생명주기를 관리한다.
  • 개발자들이 직접 POJO를 생성할 수도 있지만, 모든 권한을 Container에게 맡긴다.

💡빈 : 스프링 IoC 컨테이너가 관리하는 객체

profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글