제어의 역전(IoC)이란?
프로그램의 흐름(객체의 생성, 소멸과 같은 생명주기 등)을 개발자(Application)가 직접 제어하는 것이 아니라 외부(프레임워크)에서 제어할 수 있도록 하는 것입니다.
이를 위해 Spring Framework에서는 Application을 구성하는 객체(Bean)를 관리하는 데에 IoC Container를 이용합니다.
이 IoC Container를 이용하여 DI, AOP가 가능해집니다.
💡 DI는 IoC를 구현하기 위한 디자인 패턴 중 하나입니다. |
1. IoC의 구현
1-1. 프로그래머가 직접 제어하는 방식
public class SampleController {
private Book book;
public SampleController() {
this.book = new Book();
}
}
객체를 직접 생성하기 때문에 객체의 생명주기를 개발자가 핸들링해야합니다.
1-2. 프레임워크에게 위임하는 방식
public class SampleController {
@Autowired private Book book;
}
예제에서는 Autowired 애노테이션을 통해 직접 제어하는 방식과는 다르게 프레임워크에서 제어해주기 때문에 객체의 생명주기에 개발자가 직접 개입할 필요가 없습니다.
2. 마치며...
대학 시절부터 현재까지 웹 개발을 시작한지 그래도 꽤 오래되었는데, 최근 아직도 많이 미흡하다는 생각이 들었습니다.
"나는 왜 DI를 통해 IoC를 구현하였는가?" 라는 의문조차 갖지않고(의문을 갖지 못할 정도로 생각이 없었나보다), 그저 편하니까 사용했으나 이번 기회에 조금 더 내가 왜 이렇게 구현하는가?에 대해 생각했다는 점이 나름... 칭찬+1?
'개발 > Java || Spring' 카테고리의 다른 글
Entity, DTO 그리고 VO (0) | 2023.03.15 |
---|---|
03. 멀티 모듈 프로젝트 구성하기 (0) | 2023.03.12 |
02. 프로젝트를 깃허브에 연동하기 (0) | 2023.03.12 |
01. Spring Boot 3.0 시작하기 (0) | 2023.03.12 |
의존성 주입 (Dependency Injection, DI) (0) | 2022.10.23 |
댓글