[Spring] IoC, Inversion of Control 제어 관계 역전

Bam·2024년 10월 20일
0

Spring

목록 보기
44/48
post-thumbnail

이번엔 스프링의 또다른 핵심 원리 중 하나인 IoC에 대해서 알아보도록 하겠습니다. 개념 흐름상 DI 이전에 IoC가 나왔어야했는데 순서 구성을 잘못했네요.


IoC, Inversion of Control 제어 관계 역전

일반적인 프로그래밍에서 객체는 프로그래머에 의해서 생성되고 흐름 제어와 관리가 됩니다.

IoC는 이러한 관계를 역전시켜서 프로그래머가 아닌 프레임워크가 객체를 생성하고 흐름 제어, 관리하도록 하는 것을 의미합니다.

대표적으로 DI가 IoC를 구현하는 방식 중 하나라고 생각하시면 됩니다. 스프링 컨테이너가 빈을 생성하고 주입시키면 관리를 하죠?


스프링 프레임워크 IoC

다시 기초 개념으로 돌아가서 스프링 컨테이너(IoC 컨테이너)가 관리하는 객체들을 빈(Bean)이라고 부릅니다. 스프링은 이 빈들을 프로그램의 흐름에 따라서 등록/관리하고 DI를 수행합니다. 이때 빈들을 등록/관리하며 DI를 수행하는 역할을 스프링 컨테이너가 수행합니다.

이 스프링 컨테이너의 이름은 ApplicationContext라고 부릅니다. 즉, 스프링에서는 ApplicationContext가 빈을 등록하고 관리하는 역할을 프로그래머 대신 수행하게 됩니다.

ApplicationContext, BeanFactory

실제 빈은 BeanFactory라는 인터페이스에서 빈을 등록/관리/조회하게 됩니다. 그런데 위에서는 ApplicationContext가 이 역할을 한다고 말했죠? 그 이유는 ApplicationContextBeanFactory를 상속받은 인터페이스이기 때문입니다'.

ApplicationContextBeanFactory외에도 여러 인터페이스들을 상속해서 다양한 기능을 제공하고 있습니다.

그래서 스프링 컨테이너를 실제로 사용할 때는 ApplicationContext를 이용하게 됩니다.

0개의 댓글