본문 바로가기
Spring

Introduction to the Spring IoC Container and Beans - 스프링 IoC 컨테이너와 Beans 소개

by irerin07 2024. 1. 21.
728x90

Dependency Injection, 의존성 주입

  • Dependenct Injection, 의존성 주입은 IoC(Inversion of Control, 제어의 역전)의 특화된 형태입니다.
  • DI를 사용한다면 오브젝트들은 자신들의 의존성(함께 작업을 처리하는 다른 오브젝트들)을 오직 생성자 인수, 팩터리 메서드에 대한 인수, 혹은 객체가 생성되거나 팩토리 메서드에서 반환된 후에 객체 인스턴스에 설정된 속성을 통해서만 의존성을 정의합니다.
  • IoC 컨테이너는 빈을 생성하며 해당 빈에 정의된 의존성을 바탕으로 필요한 의존성을 주입해줍니다.

BeanFactory, ApplicationContext

  • org.springframework.beans 패키지와 org.springframework.context 패키지는 스프링 IoC 컨테이너의 근간이라 할 수 있습니다.
  • BeanFactory 인터페이스는 어떤 유형의 객체라도 관리할 수 있는 고급 구성 메커니즘을 제공합니다.
  • ApplicationContext는 BeanFactory의 하위 인터페이스로써 다음과 같은 추가적인 기능을 제공합니다.
    • 스프링 AOP와의 더 쉬운 통합
    • 메시지 리소스 처리(국제화에 사용)
    • 이벤트 발행
    • 웹 애플리케이션에서 사용하기 위한 WebApplicationContext와 같은 application-layer 특화 컨텍스트 추가
  • 요약하자면, BeanFactory는 기본 기능과 configuration 프레임워크를 제공하고, ApplicationContext는 거기에 좀더 enterprise-specific한 기능들이 추가 된 것입니다.

Beans

  • 스프링에서는 애플리케이션의 중추를 이루고 스프링 IoC 컨테이너를 통해 관리되는 객체(Objects)를 Beans 라고 부릅니다.
  • Bean은 스프링 IoC를 통해 인스턴스화되고, 조립되며, 관리되는 객체들입니다.
    • 그게 아니라면 빈은 그저 애플리케이션에 있는 수많은 객체들 중 하나일 뿐입니다.
  • Bean 사이의 의존성은 컨테이너에서 사용하는 Configuration metadata(구성 메타데이터)에 설정됩니다.

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

728x90