스프링 빈은 객체생성 -> 의존성 주입 단계의 라이플사이클은 가진다.
스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다.
스프링 빈의 이벤트 LifeCycle
스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료
어플리케이션이 동작할 때 스프링 빈을 생성하고 의존관계 주입 후 초기화를 해주는 과정이 필요 할 수도 있다.(ex)DB커넥션, 소켓서버)이런 경우 의존관계 까지에 설정이 끝난 후 초기화 콜백을 어떻게 제어할 수 있는지 알아보자.
- 인터페이스(InitializingBean, DisposableBean)
해당 인터페이스를 이용하면 초기화 콜백, 소멸 콜백 메서드로 초기화를 지원한다.
해당 인터페이스의 단점
2.빈 등록 초기화, 소멸 메서드 지정
해당 @Bean 에 직접 메소드 이름으로 초기화메소드와 소멸 메소드를 지정할 수 있다.
설정 정보의 사용특징
destroyMethod 의 특수기능
destroyMethod는 기본값이 (inferred)추론으로 등록되어있다. 보통 라이브러리는 종료하는 메소드 이름이 close, shutdown 이라는 이름으로 종료 메서드를 사용한다. 그래서 destroyMethod을 따로 적어주지 않아도 추론해서 close, shutdown 메소드가 존재하면 자동으로 호출해준다.
해당 기능을 사용하고 싶지 않으면 destroyMethod="" 으로 공백으로 설정한다.
3.@PostConstruct, @PreDestroy
어노테이션을 이용해 초기화와 종료를 실행할 수 있다.
가장 편리하게 사용할 수 있는 방법이다
스프링에서 가장 권장하는 방법이고 javax 패키지를 사용해 스프링에 종속적인 기술이 아니라 JSR-250의 자바 표준이라 스프링이 아닌 다른 컨테이너 에서도 동작한다.
유일한 단점
참고자료