## 빈 라이프사이클
- 객체 생성 -> 의존 설정 -> 초기화 -> 소멸
### 빈 객체의 초기화와 소멸
- 빈 객체를 초기화하기 위해 스프링은 빈 객체의 지정된 메서드를 호출한다. 스프링 컨테이너를 종료하면 스프링 컨테이너는 빈 객체의 소멸을 처리하며 지정된 메서드를 호출한다.
- org.springframework.beans.factory.InitializingBean
- org.springframework.beans.factory.DisposableBean
초기화와 소멸 과정이 필요하면 위 두 인터페이스를 상속하여 메서드를 구현하면 된다.
초기화와 소멸이 필요한 예에는 데이터베이스 커넥션 풀, 채팅 클라이언트 등이 있다.
- 외부에서 제공받은 클래스를 빈 객체로 등록하는 등 인터페이스를 상속할 수 없는 경우 @Bean(initMathod = "methodNamd", destroyMethod= "methodName2")로 등록할 수 있다.
### 빈 객체의 생성과 관리 범위
- 스프링 빈은 별도 설정을 하지 않으면 기본적으로 싱글톤 범위를 갖는다. getBean을 통해 가져온 객체들은 동일한 빈 객체를 참조한다는 뜻이다.
- 매번 새로운 객체를 가져오고 싶으면 프로토타입 범위의 빈을 설정하면 된다.
- @Scope("prototype") 애노테이션으로 지정할 수 있다.
- 스프링 컨테이너는 프로토타입 빈 객체의 초기화까지만 담당하고 소멸 과정에는 관여하지 않는다. 주의해서 소멸시켜주어야 한다.