카테고리 없음

[초보 웹 개발자를 위한 스프링5 프로그래밍 입문] 06.빈 라이프사이클과 범위

## 빈 라이프사이클

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

 

### 빈 객체의 초기화와 소멸

- 빈 객체를 초기화하기 위해 스프링은 빈 객체의 지정된 메서드를 호출한다. 스프링 컨테이너를 종료하면 스프링 컨테이너는 빈 객체의 소멸을 처리하며 지정된 메서드를 호출한다.

   - org.springframework.beans.factory.InitializingBean

   - org.springframework.beans.factory.DisposableBean

  초기화와 소멸 과정이 필요하면 위 두 인터페이스를 상속하여 메서드를 구현하면 된다.

  초기화와 소멸이 필요한 예에는 데이터베이스 커넥션 풀, 채팅 클라이언트 등이 있다.

 

- 외부에서 제공받은 클래스를 빈 객체로 등록하는 등 인터페이스를 상속할 수 없는 경우 @Bean(initMathod = "methodNamd", destroyMethod= "methodName2")로 등록할 수 있다.

 

### 빈 객체의 생성과 관리 범위

- 스프링 빈은 별도 설정을 하지 않으면 기본적으로 싱글톤 범위를 갖는다. getBean을 통해 가져온 객체들은 동일한 빈 객체를 참조한다는 뜻이다. 

- 매번 새로운 객체를 가져오고 싶으면 프로토타입 범위의 빈을 설정하면 된다.

   - @Scope("prototype") 애노테이션으로 지정할 수 있다.

   - 스프링 컨테이너는 프로토타입 빈 객체의 초기화까지만 담당하고 소멸 과정에는 관여하지 않는다. 주의해서 소멸시켜주어야 한다.