IoC : 의존성 주입/제어 반전(IoC)
- 제어의 흐름을 프로그램이 아닌 프레임워크로 넘기는 개념
- IoC는 개념, IoC 컨테이너는 실체, DI는 IoC 구현 방법
Spring 프레임워크의 핵심으로써 IoC Container를 통해 생성에서 소멸까지 프레임워크가 담당하는 개념입니다
- IoC (Inversion of Control, 제어의 역전)
- IoC는 객체의 생성과 생명주기 관리를 개발자가 아닌 프레임워크가 담당하는 개념입니다.
- 이로 인해 개발자는 객체 생성과 생명주기 관리에 신경 쓰지 않고, 비즈니스 로직에 집중할 수 있게 됩니다.
- IoC의 핵심 아이디어는 "제어의 흐름을 프로그램이 아닌 프레임워크에 넘기는 것"입니다.
- DI (Dependency Injection, 의존성 주입)
- DI는 IoC를 구현하는 한 방법으로, 객체간의 의존성을 프레임워크가 관리하며 필요한 의존성을 주입하는 것입니다.
- 예를 들어, 클래스 A가 클래스 B를 사용한다면, 클래스 A는 클래스 B에 대한 의존성을 가지게 됩니다.
- DI를 사용하면 이런 의존성을 프레임워크가 대신 관리하게 되며,
- 클래스 A는 직접적으로 클래스 B를 생성하거나 관리하지 않아도 됩니다.
- IoC Container
- IoC 컨테이너는 IoC 개념을 구현한 것으로, 객체의 생성과 생명주기 관리, 의존성 주입 등을 담당합니다.
- Spring 프레임워크의 IoC 컨테이너는 BeanFactory와 ApplicationContext 등이 있습니다.
- 이들은 애플리케이션의 기본적인 구조를 형성하고, 필요한 객체를 생성하고 관리하는 역할을 담당합니다.
- IoC 컨테이너를 통해 개발자는 객체의 생명주기와 의존성에 대해 신경 쓰지 않고, 비즈니스 로직에만 집중할 수 있습니다.
이처럼 IoC는 프레임워크가 객체의 생성과 생명주기, 의존성을 관리하는 개념이며, 이를 구현한 것이 IoC 컨테이너입니다.
따라서 IoC가 더 상위 개념이며, IoC 컨테이너는 이를 구현한 도구라고 볼 수 있습니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
SQL 조인에 대한 이해 - Outer Join과 Inner Join (0) | 2023.07.07 |
---|---|
Meta 어노테이션 (0) | 2023.07.07 |
DispatcherServlet은 어떻게 View와 Controller를 구별할까 (0) | 2023.07.05 |
DispatcherServlet 왜 필요한가 (0) | 2023.07.05 |
Spring의 @RequestMapping (0) | 2023.07.05 |