[Spring] DI, Ioc

이병수·2024년 1월 22일
0

스프링 정리

목록 보기
7/24

DI, Ioc


DI

Dependency Injection, 의존 관계 주입 기능으로 객체를 직접 생성하는 것이 아닌 외부에서 생성 후 주입 시켜주는 방식을 의미한다.

  • 객체를 내부에서 생성하는 것이 아닌 외부에서 생성함으로써 묘듈간의 결합도가 낮아지고 유연성이 높아지는 장점을 가지고 있다.

  • 보통 생성자 주입을 통해 사용하게 된다.

    • setter 주입은 값이 변경될 가능성이 있기 때문에 별로 안좋다.
  • 확장성과 유지보수 측면에서 용이하다.


IoC

Inversion of Control, "제어의 역전" 이라는 의미로 메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아닌 외부에서 결정되는 것을 의미한다.

  • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 한다.

  • 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있다.

스프링에서는 객체가 만들어지고 있는 순서가 이렇게 된다.

  1. 객체 생성

  2. 의존성 객체 주입

    • 제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입한다.
  3. 의존성 객체 메서드 호출

즉, 스프링이 모든 의존성 객체를 스프링이 실행될 때마다 만들어주고 필요한 곳에 주입함으로써 이들은 싱글톤 패턴의 특징을 가지고 있다.

또한 제어의 흐름을 사용자가 아닌 스프링에 맡겨 작업을 처리하게 된다.

profile
백엔드 개발자가 되고 싶어요

0개의 댓글