[CS 개념] IoC 와 DI

정동아·3일 전
0

CS 개념

목록 보기
2/3

IOC

(IOC 란 Inversion of Control 으로 제어의 역전을 뜻한다.)

프레임 워크를 사용하지 않는 전통적인 프로그래밍에서는 개발자가 객체의 생성 관리, 제어 흐름등을 직접 다루지만,
IOC는 프레임 워크가 내부에서 결정된 대로 흐름과 제어를 담당한다.

스프링에서는 ApplicationContext 라는 컨테이너에서 컴포넌트를 생성하고 조립하며, 객체의 리사이클을 관리한다.

IOC라는 개념을 통해

  • 개발자는 비즈니스 로직에 집중할 수 있음
  • 프로그램의 진행 흐름과 구체적인 구현을 분리시킬 수 있음.
  • 구현체 사이의 변경이 용이
  • 객체 간 의존성이 낮아짐

과 같은 이점을 얻을 수 있다.

DI

(DI 란 Dependency Injection 으로 의존성 주입을 뜻한다.)

IOC 개념을 구현하기 위해 사용하는 디자인 패턴 중 하나로, 객체의 의존관계를 외부에서 주입시키는 패턴이다.
객체가 직접 의존하는 객체를 생성하거나 참조하는 대신, 의존성을 외부에서 주입받도록 한다.

DI에는 3가지 방법이 있다.

  • 생성자 주입 (Constructor Injection)
    • 생성자 호출 시점에 딱 1번 호출되는 것을 보장한다. 불변, 필수 의존관계에 사용한다.
  • Setter 주입 (Setter Injection)
    • 선택, 변경 가능성이 있는 의존관계에 사용한다. 스프링 빈을 선택적으로 등록 가능하다.
  • 필드 주입 (Field Injection)
    • 필드에 직접 의존성을 주입하는 방식으로 주로 @Autowired 어노테이션을 사용해서 필드에 의존성을 주입한다.
    • 외부에서 변경이 불가능하여 테스트하기 어렵고, DI 프레임워크 없이는 작동하기 힘들어서 주로 애플리케이션과 관계없는 테스트코드나 @Configuration 같은 스프링 설정 목적으로 사용한다.

reference

0개의 댓글