[Spring] IoC 컨테이너

JUNYOUNG·2024년 3월 13일


Spring의 공식문서를 보면 IoC 컨테이너에 대한 중요성을 강조하고 있습니다. 따라서 IoC가 무엇인지, Spring framework는 IoC를 어떻게 구현하는지, 왜 중요한지 알아보겠습니다.

Spring의 핵심원리

Inversion of Control: 제어의 역전

Spring framework의 핵심 원리 중 하나인 제어의 역전(IoC)은 Spring의 가장 중요한 특징 중 하나로, 애플리케이션의 결합도를 낮추고, 유연성 및 확장성을 높이는 데 크게 기여합니다.

배경

Spring framework의 등장 이전, JAVA EE 플랫폼은 EJB와 같은 기술을 통해 객체의 생명주기와 의존성 관리에 대한 일정 수준의 자동화를 제공했습니다. 그러나 이러한 기능들은 복잡하고, 사용하기 어려웠습니다.
Spring은 이러한 문제를 해결하기 위해 등장했으며, IoC와 DI를 보다 간결하고 유연하게 적용함으로써 개발자가 의존성 관리에 드는 부담을 줄이고 비즈니스 로직 개발에 보다 집중할 수 있도록 도와줍니다

Spring IoC 컨테이너의 구현

객체의 생성과 의존성 관리를 개발자가 아닌 Spring 컨테이너가 담당합니다

Spring 프레임워크는 제어의 역전(IoC)을 구현하여 애플리케이션의 객체 생성과 의존성 관리를 용이하게 합니다.
이 과정은 주로 ApplicationContext를 중심으로 수행되며,
여기에는 Bean의 정의, 생성, 의존성 주입, 라이프사이클 관리 등이 포함됩니다.

Bean의 정의 및 생성

Spring은 XML, 어노테이션, 자바 기반의 설정을 통해 Bean을 정의합니다. 개발자는 이러한 방법으로 애플리케이션에 필요한 객체의 구성 설계를 제공하고, ApplicationContext는 이를 기반으로 Bean 인스턴스를 생성합니다.

의존성 주입

ApplicationContext는 Bean 간에 정의된 의존성을 자동으로 주입합니다. 이는 @Autowired 애너테이션을 사용하는 필드 주입, 생성자 주입, 또는 세터 메소드를 통해 수행될 수 있습니다. 의존성 주입은 객체가 필요로 하는 다른 객체들과 느슨하게 결합될 수 있게 해 주어, 코드 재사용성과 유닛 테스팅을 용이하게 합니다.

Bean의 라이프사이클 관리

Spring은 Bean의 전체 라이프사이클을 관리합니다. 이는 초기화 이벤트 리스너, 파괴 메소드 등을 포함하여, Bean이 생성되고, 사용되고, 소멸될 때 수행되어야 하는 여러 작업을 포함합니다.

설정 관리의 유연성

Spring IoC 컨테이너는 Bean의 설정 정보를 외부 설정 파일이나 클래스에서 관리합니다. 이는 애플리케이션을 다시 컴파일하지 않고도 구성을 변경할 수 있게 해 주어, 유연성을 제공합니다.


Spring IoC 컨테이너 및 Bean 소개

  • org.springframework.Beansorg.springframework.context 패키지는 Spring 프레임워크에서 IoC(Inversion of Control, 제어의 역전) 컨테이너를 만들 때 필요한 기초 요소들을 담고 있습니다.
  • BeanFactory 인터페이스는 다양한 종류의 객체를 관리하는 고급 설정 메커니즘을 제공합니다.
  • ApplicationContextBeanFactory를 확장한 것으로, Spring의 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍) 기능과 쉽게 통합되는 기능을 포함합니다.
    또한 메시지 처리를 통한 국제화, 이벤트 발행 등의 기능도 제공합니다.
  • ApplicationContextBeanFactory보다 더 많은 기능을 제공하며, Spring의 IoC 컨테이너를 설명할 때 주로 사용됩니다.

Ref

https://docs.spring.io/spring-framework/reference/core/Beans/introduction.html
https://docs.spring.io/spring-framework/reference/core/beans.html

Next step

  • POJO
  • AOP
  • 디자인패턴
profile
Onward, Always Upward - 기록은 성장의 증거

0개의 댓글