Today I Learned_220501

1 분 소요

Spring Framework

Bean

Bean

  • 스프링 컨테이너가 관리하는 자바 객체(ApplicationContext가 알고 있는 객체)
  • 스프링 컨테이너에 의해 인스턴스화, 관리 , 생성된다.
  • 빈 등록 방법
    1. @Component(@Controller 어노테이션 내부에 Component 존재) 어노테이션 사용 → 컴포넌트 스캐닝 방식
    2. @Bean 어노테이션 사용 → Configuration을 통한 직접 등록 방식
  • 보통 싱글턴으로 존재
  • 싱글턴 : 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는 디자인 패턴

Bean Scope

  • Spring은 기본적으로 Bean이 Singleton으로 생성하여 관리됨
  • Container에서 한번 생성 후, Container가 사라질 때 동시에 사라진다.
  • Singleton이기에 동일한 것을 참조
  • Spring을 통해서 Bean을 주입받으면 주입받은 Bean은 동일한 객체이다.

Scope의 종류

  • Singleton
    • 하나의 Bean 정의에 대해서 컨테이너 내에 단 하나만 존재
  • prototype
    • 하나의 Bean 정의에 대해서 매번 다른 객체가 존재

Web Scope

웹 환경에서만 동작하는 특징을 가지고 있으며, 종료 시점까지 스프링 컨테이너가 관리한다.

클라이언트에게 서비스를 제공하다가 문제가 생겼을 때, 웹 스코프를 통해 공통된 포맷으로 관리가 가능하다.

  • request (Spring MVC Web Application에서만 사용)
    • HTTP request 생명주기 안에 단 하나의 객체만 존재
  • session (Spring MVC Web Application에서만 사용)
    • HTTP session 생명주기 안에 단 하나의 객체만 존재
  • global session (Spring MVC Web Application에서만 사용)
    • 하나의 global HTTP Session의 생명주기 안에 단 하나의 객체만 존재
  • application
    • 서블릿 컨텍스트와 동일한 생명주기를 가지는 스코프
  • websocket
    • 웹 소켓과 동일한 생명주기를 가지는 스코프

Bean 객체의 생명주기

객체 생성 → 의존 설정 → 초기화 → 소멸

  1. 스프링 컨테이너 초기화 시, 빈 객체 생성
  2. 빈 객체 생성 후, 의존성 주입
  3. 의존 설정이 완료되면 빈 객체 초기화
  4. 스프링 컨테이너 종료 시, 스프링 컨테이너는 빈 객체를 소멸

References

Bean 정리

Bean의 개념과 생성 원리

Web Scope

Bean 객체의 생명주기

카테고리:

업데이트: