public class NetworkClient implements InitializingBean, DisposableBean {
private String url;
public NetworkClient() {
System.out.println("생성자 호출, url = " + url);
}
...
// InitializingBean
// 프로퍼티가 세팅이 끝나면 = 의존 관게 주입이 끝나면 호출한다.
@Override
public void afterPropertiesSet() throws Exception {
connect();
call("초기화 연결 메시지");
}
// DisposableBean
// 빈이 종료될 때 호출된다.
@Override
public void destroy() throws Exception {
disconnect();
}
}
public class BeanLifeCycleTest{
@Test
public void lifeCycleTest() {
ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class);
NetworkClient client = ac.getBean(NetworkClient.class);
ac.close();
}
@Configuration
static class LifeCycleConfig {
@Bean
public NetworkClient networkClient() {
NetworkClient networkClient = new NetworkClient();
networkClient.setUrl("http://hello-spring.dev");
return networkClient;
}
}
}
실행하면 빈이 생성된 뒤 url이 정상적으로 초기화된 것을 확인할 수 있다. 이후 스프링 컨테이너가 종료되자 소멸 메서드가 호출되었다.
인터페이스를 사용하는 초기화, 종료 방법은 초창기 방식이기 때문에 지금은 거의 사용하지 않는다.