Spring Bean이란?

dev-well-being·2023년 8월 31일
1
post-thumbnail

Bean이란?

  • 빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다. 즉 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다.

Bean 등록 방법

  • 빈을 스프링 컨테이너에 등록하는 방벙에는 두 가지가 있다.
    @ Bean을 통해 직접 등록하는 방법과 @ComponentScan을 이용하여 자동으로 빈 등록하는 방법이 있다.

@Bean

  • 스프링이 뜰 때에 스프링은 자동으로 @Configuration이 붙은 클래스를 찾아서 구성 정보로 사용한다. 이 클래서에서 Bean을 등록하고 의존관계주입을 처리할 수 있다.
  • 빈 객체로 등록하고 싶은 메서드의 위에 @Bean 어노테이션을 추가하면 된다.

@Component

  • @Configuration이 붙은 클래스에 @ComponentScan을 붙여 @Component가 붙은 객체를 찾아 자동으로 빈등록하는 방법이 있다.
  • 빈 객체로 등록하고 싶은 클래스에 @Component를 추가한다.

Spring Bean의 이벤트 라이플 사이클

  • Spring Bean은 스프링 컨테이너 내부에서 생성되고, 스프링이 종료되기 전까지 생명주기(Life-Cycle)을 가지고 있다.
  • 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백(EVENT) -> 앱 본연의 동작 수행 -> 소멸전 콜백(EVENT) -> 스프링 종료
  • 즉, 스프링 컨테이너가 가동되고 본격적으로 앱이 동작하기 전에 한 번, 스프링이 종료되기 전에 한번 특정한 동작을 수행할 수 있는 이벤트가 존재한다.
  • 이러한 이벤트에서 우리는 초기화 콜백을 이용하여 테스트로 사용할 데이터를 앱의 사전 동작 전에 미리 저장한다던지, 또는 소명전 콜백을 이용하여 사고에 가깝게 스프링이 종료되는 상황에서 데이터를 백업하는 등의 동작을 수행할 수 있다.

Bean Scope란?

  • 빈 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다. 스프링은 다음과 같은 다양한 스코프를 지원한다.
    • 싱글톤(Singleton) : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.
    • 프로토타입(Prototype) : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다.
    • 웹 관련 스코프
      • request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다.
      • session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다.
      • application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다.

참고자료

profile
안녕하세요!! 좋은 개발 문화를 위해 노력하는 dev-well-being 입니다.

0개의 댓글