[springBoot] DI와 IoC

ㅇㅅㅇ·2023년 4월 6일
0

SpringBoot

목록 보기
3/3

1. DI, Dependency Injection

의존성 주입, 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능

  • 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식
  • 모듈 간의 결합도가 낮아지고 유연성을 높일 수 있음

첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법
두번째 방법은 외부에서 생성 된 객체를 setter()를 통해 사용하는 방법 (DI)

  • A객체에서 B, C객체를 사용(의존)할 때, A객체에서 직접 생성 하는 것이 아니라 외부(IOC컨테이너)에서 생성된 B, C객체를 조립(주입)시켜 setter 혹은 생성자를 통해 사용하는 방식이다.
  • 스프링에서는 객체를 Bean이라고 부르며, 프로젝트가 실행될 때 사용자가 Bean으로 관리하는 객체들의 생성과 소멸에 관련된 작업을 자동적으로 수행해주는데 객체가 생성되는 곳을 스프링에서는 Bean 컨테이너라고 부른다.

2. IoC, Inversion of Control

제어의 역전, 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정됨

  • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.

기존에는 다음과 같은 순서로 객체가 만들어지고 실행되었다.
1. 객체 생성
2. 의존성 객체 생성 : 클래스 내부에서 생성
3. 의존성 객체 메소드 호출

스프링에서는 다음과 같은 순서로 진행된다.
1. 객체 생성
2. 의존성 객체 주입 : 제어권을 스프링에게 위임, 스프링이 만든 객체를 주입
3. 의존성 객체 메소드 호출

TBC

출처 : https://velog.io/@bahar-j/Spring-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A3%BC%EC%9E%85Dependency-Injection

0개의 댓글