세상을 이롭게

[개념정리] DI(의존주입)와 IOC(제어의 역전) 본문

Spring

[개념정리] DI(의존주입)와 IOC(제어의 역전)

2023. 8. 26. 20:19

DI 란 무엇인가?
DI(Dependency Injection) 의존주입
객체지향 프로그래밍에서 다른객체를 사용하는 것 == 다른객체에 의존함

예를 들어, A 객체와 B 객체, C 객체가 존재한다고 하자.
이때 A 객체가 B 객체와 C 객체를 사용한다고 할때, A 객체는 B 와 C 객체의 기능에 의존한다고 표현한다.
B와 C 객체를 사용하기 위해 A 객체가 B,C 객체를 직접 생성하여 사용할 수 도 있고,
미리 만들어져 있는 객체를 할당받아서 사용할 수도 있다. == 의존주입

의존주입은 Setter() 와 constructor()로 할 수 있다.

예시코드로 보면

class Member{
	String name;
    private Member() {}
}

public static void memberDI(Member mb){
	Member m = mb; // 약한 결합으로 생성된 것을 주입 받음 <- 의존 주입
}

 

스프링에서 의존 주입 방법 (자주 사용되는 곳)
1. bean 설정 xml 을 통한 의존 주입 (스프링)
2. Java 코드를 통한 의존 주입 (스프링부트 - 필요한 경우만)
3. 어노테이션을 이용한 의존 주입 (스프링부트)

여기서는 위에 대한 예제 코드는 다루지 않겠다. (하나 하나 설명하기엔 너무 방대하다.)


IOC 란 무엇인가?
IOC(Inversion Of Control) 제어의 역전
직접 객체를 제어하지 않고 컨테이너로 객체의 제어권이 넘어감 을 의미한다.

컨테이너란?
B, C 객체를 생성, 라이프 사이클을 관리, A 객체에 의존주입을 관리해주는 무엇인가를 컨테이너라고 부른다.
그 무엇인가는 스프링이다.
스프링이 객체를 생성하고 라이프사이클을 관리하고, 필요로 하는 객체에 의존주입을 하는 컨테이너이다.

'Spring' 카테고리의 다른 글

02. DB 연동하기  (0) 2022.11.05
01. STS4 설치하기  (0) 2022.11.05
SpringBoot_(1)_개발환경  (0) 2020.02.27
SpringBoot_(2)_Securing a Web Application  (0) 2020.02.27