[Spring] IoC와 DI

밀크야살빼자·2023년 5월 20일
0

IoC (Inversion of Control)

  • 제어의 역전 = 제어의 흐름를 바꾼다.
  • 메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.
  • 의존성을 역전시켜 객체간의 결합도를 줄이고 유연한 코드를
    작성할 수 있게해서 가독성 및 코드 중복, 유지보수를 편하게 할 수 있게 한다.

기존 객체 생성 방식
객체 생성 -> 의존성 객체 생성(클래스 내부에서 생성)-> 의존성 객체 메서드 호출

스프링 객체 생성 방식
객체 생성 -> 의존성 객체 주입(스스로 스스로가 만드는것이 아니라 제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입한다. ) -> 의존성 객체 메서드 호출

스프링이 모든 의존성 객체를 스프링이 실행될때 다 만들어주고 필요한곳에 주입시켜줌으로써 Bean들은 싱글턴 패턴의 특징을 가지며,
제어의 흐름을 사용자가 컨트롤 하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다.

DI(Dependency Injection)

  • 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다.
  • 모듈 간의 결합도가 낮아지고 유연성이 높아진다.

  1. new 생성자

  2. 외부에서 생성된 객체를 주입

  • setter()
  • 생성자
  • 필드
    A 객체에서 B객체와 C객체를 사용(의존)할 때, A객체에서 직접 생성하는 것이 아니라 외부(IoC 컨테이너)에서 생성된 B객체와 C객체를 주입시키는 방식이다.

profile
기록기록기록기록기록

0개의 댓글