상세 컨텐츠

본문 제목

Spring Bean의 개념과 생성원리 및 과정

Spring Boot

by Wanderer Kim 2024. 6. 8. 20:53

본문

728x90

Spring Bean 이란?

  • Spring Bean은 Spring IOC 컨테이너가 관리하는 자바 객체로서 컨테이너에 의해 생명 주기가 관리되는 객체를 의미한다.
  • IOC 컨테이너 안에 들어있는 객체로 필요할 때마다 IOC 컨테이너에서 가져와서 사용한다.
  • Bean으로 등록하는 방법으로는 @Bean, @Compoenet, @Controller, @Service, @Repository 를 사용하거나, xml 설정을 이요하면 된다.
    • xml 설정은 최근에는 더이상 사용되지 않는다.
  • Bean은 ApllicationContext가 알고 있는 객체이며 ApplicationContext가 생성하고 직접 관리해주는 객체를 의미한다.

Spring Bean의 생명 주기

  • 객체 생성 -> 의존 설정 -> 초기화 -> 사용 -> 소명 과정의 생명 주기를 가지고 있다.
  • Bean은 스프링 컨테이너에 의해 생명 주기를 관리한다.
  • 스프링 컨테이너가 초기화도리 때 먼저 빈 객체를 설정에 맞춰 생성하며 의존 관계를 설정한 뒤 해당 프로세스가 완료되면 빈 객체가 지정한 메소드를 호출해서 초기화를 진행한다.
  • 객체를 사용해 컨테이너가 종료될 때 빈이 지정한 메소드를 호출해 소멸 단계를 거친다.
  • 스프링은 InitializingBean 인터페이스와 DisposableBean을 제공하며 빈 객체의 클래스가 InitializingBean 인터페이스 또는 DisposableBean을 구현하고 있으면 해당 인터페이스에서 정의된 메소드를 호출해 빈 객체의 초기화 또는 종료를 수행한다.
  • 또다른 방법으로는 @PostConstruct와 @PreDestroy를 이용해서 각각 초기화와 소멸단계에서 이벤트를 받아 처리할 수 있다.

Spring Bean의 Scope

  •  Bean Scope는 기본적으로 빈이 존재하는 범위를 뜻한다.
  • Bean의 객체는 기본적으로 singleton의 범위를 가지며 singleton은 스프링 컨테이너의 시작과 종료까지 단 하나의 객체만을 사용하는 방식이다.
  • singleton 외에도 request, session, global session과 같은 scope도 Spring MVC에서 사용가능하다
Scope 설명
singleton 하나의 Bean 정의에 대해 Spring IOC Container에서 단 하나의 객체만 존재한다.
prototype 하나의 Bean 저의에 대해 다수의 객체가 존재할 수 있다.
prototype으로 설정하면 객체를 매번 새롭게 생성하며 GC에 의해 bean이 자동으로 제거된다.
request 하나의 Bean 정의에 대해 하나의 HTTP request의 생명주기 안데 단 하나의 객체만 존재한다.
session 하나의 Bean 정의에 대해 하나의 HTTP session의 생명주기 안에서 단 하나의 객체만 존재한다.
global session 하나의 Bean 정의에 대해 하나의 global HTTP session의 생명주기 안에서 단 하나의 객체만 존재한다.

 

반응형

관련글 더보기

댓글 영역