빈 생명주기 콜백
스프링 빈의 라이프 사이클
- 객체 생성 -> 의존관계 주입
개발자가 의존관계 주입이 모두 완료된 시점을 아는 방법은?
스프링 빈의 이벤트 라이프사이클
참고: 객체의 생성과 초기화를 분리하자
- 생성자: 객체를 생성
- 초기화: 생성된 값들을 활용하는 무거운 동작
생성자 안에서 무거운 작업을 함께 하기보다 생성과 초기화를 명확하게 나누는 것이 유지보수 관점에서 유리
스프링의 빈 생명주기 콜백 지원
@PostConstruct, @PreDestroy 애노테이션 지원인터페이스(InitializingBean, DisposableBean)
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
...
@Override
public void afterPropertiesSet() throws Exception{
...
}
@Override
public void destroy() throws Exception{
...
}
InitializingBean은 afterPropertiesSet() 메소드로 초기화 지원
DisposableBean은 destroy() 메소드로 소멸 지원
단점
빈 등록 초기화, 소멸 메소드 지정
설정 정보에 초기화, 소멸 메소드를 지정 가능
@Bean(initMethod = "init", destroyMethod = "close")
설정 정보 사용 특징
애노테이션 @PostConstruct, @PreDestroy
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
...
@PostConstruct
public void init(){
...
}
@PreDestroy
public void close(){
...
}
javax.annotation.PostConstruct -> 스프링에 종속적인 기술이 아님 -> 스프링이 아닌 다른 컨테이너에서도 동작정리
@PostConstruct, @PreDestroy 애노테이션을 사용하자@Bean의 initMethod, destroyMethod 사용