[78일차] Spring - Ioc 컨테이너, DI

SOSO·2022년 8월 8일
0

학원

목록 보기
57/59
post-thumbnail

Ioc 컨테이너

IOC (Inversion of Control) 제어의 역전

IoC 컨테이너는 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며, 스프링컨테이너로부터 필요한 객체를 가져와 사용한다

  • 스프링 애플리케이션에서는 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 독립된 컨테이너가 담당한다. 이를 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 그래서 스프링 컨테이너를 IoC 컨테이너라고도한다.

  • 스프링 컨테이너는 단순한 DI 작업 보다 더 많은 일을 한다. DI를 위한 빈 팩토리에 엔터프라이즈 애플리케이션을 개발하는 데 필요한 여러 가지 컨테이너 기능을 추가한 것을 애플리케이션 컨텍스트라고 부른다.

DI

DI (Dependency Injection 의존관계 주입

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

의존관계 란

원본 개체의 변화에 따라 의존 개체도 변화하는 형식 사이의 관계

강한 결합

객체 내부에서 다른 객체를 생성하는 것은 강한 결합도를 가지는 구조이다. A 클래스 내부에서 B 라는 객체를 직접 생성하고 있다면, B 객체를 C 객체로 바꾸고 싶은 경우에 A 클래스도 수정해야 하는 방식이기 때문에 강한 결합이다.

느슨한 결합

객체를 주입 받는다는 것은 외부에서 생성된 객체를 인터페이스를 통해서 넘겨받는 것이다. 이렇게 하면 결합도를 낮출 수 있고, 런타임시에 의존관계가 결정되기 때문에 유연한 구조를 가진다.

DI 장점

  • 의존성이 줄어든다

  • 재사용성이 높은 코드가 된다

  • 테스트하기 좋은 코드가 된다

  • 가독성이 높아진다

의존관계 주입 종류

Constructor Injection (생성자 주입)

Setter Injection (수정자 주입)

Method Injection (필드 주입)

profile
한다 열심히

0개의 댓글