public class NetworkClient {
private String url;
public NetworkClient() {
System.out.println("생성자 호출, url = " + url);
}
...
@PostConstruct
public void init() throws Exception {
connect();
call("초기화 연결 메시지");
}
@PreDestroy
public void close() 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;
}
}
}
설정 파일에서 해당 빈을 등록해주면 애너테이션에 붙은 메서드를 생명 주기에 따라 실행한다.