SpringContainer

마동찬·2023년 7월 24일

📌SpringContainer

개발자가 직접 객체를 생성한다면 아래와 같이 작성하게 된다

Object obj = new Object();

하지만 Framework의 가장 큰 특징은 코드의 제어권을 가져간다는 것이다
Spring Framework의 경우 IoC/DI를 사용하여 의존성을 주입시켜주는데,
이때 이 의존성을 주입할 객체를 생성하고 관리하는 것이 바로 스프링 컨테이너이다
그리고 생성된 객체를 빈(Bean)이라고 부른다


Configuration

개발자는 스프링 컨테이너에게 객체의 생성과 관리를 맡기기 위해
@Configuration이라는 설정 정보를 사용하여 스프링 컨테이너에 스프링 빈(Bean)을 등록한다
클래스에 Configuration 어노테이션을 사용하면 스프링 컨테이너가
Bean 어노테이션이 적힌 모든 메서드를 호출하여 반환된 객체를 스프링 컨테이너에 등록한다
이렇게 등록이 된 빈들은 메서드 명의 이름으로 스프링 컨테이너에 저장된다
(@Bean(name = "~~~")의 방식으로 Bean의 이름을 따로 지정할 수도 있다)

Bean의 이름은 중복을 허용하지 않기 때문에 항상 유의해서 빈을 등록해야 한다 (중복이 되면 아래와 같은 에러가 발생한다)

org.springframework.beans.factory.NoUniqueBeanDefinitionException:


BeanFactory와 Application Context

컨테이너에는 두 종류가 있으나, 결론부터 말하자면 Application Context가 우리가 보통 사용하는 스프링 컨테이너라고 보면 된다

  1. BeanFactory

    스프링 컨테이너의 최상위 인터페이스이며 빈을 관리하고 조회하는 역할을 담당한다

    또한 빈과 관련된 기능은 BeanFactory가 제공하는 기능이다

  1. Application Context

    그럼에도 우리가 대부분 사용하는 컨테이너는 Application Context 이다

    그 이유는 Application Context 같은 경우 빈 팩토리를 상속받아 빈과 관련된 기능을 제공하는 것은 물론이고

    그 외에의 수많은 부가기능들을 함께 제공한다


스프링 빈(Bean)이란?

스프링에서는, 스프링 IoC 컨테이너에 의해 관리되고 애플리케이션의 핵심을 이루는 객체들을 Bean이라고 부른다. Bean은 스프링 IoC 컨테이너에 의해 인스턴스화되어 조립되거나 관리되는 객체를 말한다.

즉, 스프링 빈은 스프링 컨테이너에 의해서 만들어지고 관리되는 객체라는 뜻이다.

profile
새내기개발자 성장기록

0개의 댓글