스프링 IoC 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 메소드 호출 → 사용 → 소멸 전 콜백 메소드 호출 → 스프링 종료
인터페이스( InitializingBean, DisposableBean )
설정 정보에 초기화 메소드, 종료 메소드 지정
@PostConstruct, @PreDestroy 어노테이션 지원
public class InterfaceBean implements InitializingBean, DisposableBean {
@Override
public void afterPropertiesSet() throws Exception {
// 초기화 콜백 (의존관계 주입이 끝나면 호출)
}
@Override
public void destroy() throws Exception {
// 소멸 전 콜백 (메모리 반납, 연결 종료와 같은 과정)
}
}
InitalizingBean은 afterPropertiesSet() 메소드로 초기화를 지원 (의존관계 주입이 끝난 후에 초기화 진행)
DisposableBean은 destory() 메소드로 소멸을 지원 (Bean 종료 전에 마무리 작업, 예를 들면 자원 해제(close() 등))
public class SettingBean {
public void initialize() throws Exception {
// 초기화 콜백 (의존관계 주입이 끝나면 호출)
}
public void close() throws Exception {
// 소멸 전 콜백 (메모리 반납, 연결 종료와 같은 과정)
}
}
@Configuration
class LifeCycleConfig {
@Bean(initMethod = "initialize", destroyMethod = "close")
public SettingBean settingBean() {
// 생략
}
}
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class AnnotationBean {
@PostConstruct
public void initialize() throws Exception {
// 초기화 콜백 (의존관계 주입이 끝나면 호출)
}
@PreDestroy
public void close() throws Exception {
// 소멸 전 콜백 (메모리 반납, 연결 종료와 같은 과정)
}
}