본문 바로가기

학습 기록/스프링 부트3 백엔드 개발자 되기[자바편]

[02장.2] 1. 제어의 역전(IoC)과 의존성 주입(DI)

IoC (Inversion of Controller)

: 제어의 역전

: 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져야 하는 것

 

[클래스 A에서 B 객체 생성]

: 자바에서는 코드를 작성해 객체를 생성할 때 필요한 곳에서 바로 생성 진행

public class A{
	b = new B();
}

 

[스프링 컨테이너 객체 관리 방식]

제어의 역전(IoC)를 적용한다면 아래와 같은 코드의 형태로 바뀌며, 이전과 다르게 클래스 B 객체를 직접 생성하는 것이 아닌 어디서 받아와 사용하는 것으로 추측이 가능함

- 스프링은 스프링 컨테이너가 객체를 관리, 제공하는 역할을 진행

public class A{
	private B b; // 코드에서 객체를 생성하지 않고 어디선가 받아온 객체를 b에 할당
}

 

https://kcode-recording.tistory.com/41

 

[Spring Core] IoC (Inversion of Control)

IoC(Inversion of Control)란? : '애플리케이션 흐름의 주도권을 Spring이 갖는다'를 의미(제어의 역전) : 개발자가 가지던 제어권을 외부에서 갖는다는 것을 의미(예를들면 생성자명이 변경될 경우 개발

kcode-recording.tistory.com


DI(Dependency Injection)

: 의존성 주입 (= 다른 클래스에 의존)

: IoC(제어의 역전)을 구현하기 위해 사용하는 방법

public class A{
	// A에서 B를 주입
    // B객체를 생성했지만 본 객체를 직접 생성하지 않고 주입 받고 있음
    // 쉽게 말해 스프링 컨테이너가 B객체를 만들어서 클래스 A에 준 것
    @Autowired
    B b;
}

 

* @Autowired : 스프링 컨테이너에 있는 빈(스프링 컨테이너에서 관리하는 객체)을 주입

 

 

 

https://kcode-recording.tistory.com/42

 

[Spring Core] DI (Dependency Injection)

DI(Dependency Injection)란? : IoC의 개념을 조금 더 구체화 한 것으로 의존성 주입을 의미함 즉, IoC 개념을 구체화시킨 것으로 객체간의 관계를 느슨하게 해줌 (느슨한 결합) / 클래스들 간의 강한 결합

kcode-recording.tistory.com