스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료되기 때문에 초기화 작업은 의존관계 주입이 모두 완료되고 난 이후에 호출해야 한다.
의존관계 주입이 모두 완료되는 시점을 알기 위해 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 3가지 방법이 있다.
// 스프링 의존관계 주입 후 호출
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("NetworkClient.afterPropertiesSet");
connect();
call("초기화 연결 메세지");
}
// 빈이 종료될 때 호출
@Override
public void destroy() throws Exception {
System.out.println("NetworkClient.destroy");
disconnect();
}
@Bean(initMethod = "init", destroyMethod = "close")
@PostConstruct
public void init() {
System.out.println("NetworkClient.init");
connect();
call("초기화 연결 메세지");
}
@PreDestroy
public void close() {
System.out.println("NetworkClient.close");
disconnect();
}
*참고 자료
스프링 핵심 원리 - 기본편 (김영한님)