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
'학습 기록 > 스프링 부트3 백엔드 개발자 되기[자바편]' 카테고리의 다른 글
[02장.2] 3. 관점 지향 프로그래밍(AOP) (0) | 2023.08.18 |
---|---|
[02장.2] 2. 빈과 스프링 컨테이너 (0) | 2023.08.18 |
[02장.1] 스프링과 스프링부트 (0) | 2023.08.17 |
[01장.6~7] 백엔드 프로그래밍 언어 및 자바 애너테이션 (0) | 2023.06.29 |
[01장.5] 백엔드 개발자의 업무 (0) | 2023.06.29 |