본문 바로가기

SpringFramework Core - I. IoC 컨테이너/6. Bean 커스터마이징하기

6.1. 라이프사이클 콜백

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle

 

 

컨테이너가 bean의 라이프사이클을 관리하는 것과 상호작용하기 위해서는 스프링의 InitializingBean과 DisposableBean 인터페이스들을 구현하면 된다. 컨테이너는 bean이 초기화와 소멸 과정을 통해 특정 행위를 할 수 있도록, afterPropertiesSet()을 먼저 호출한 후 destroy()를 호출한다.

 

 현대의 스프링 애플리케이션에서, JSR-250의 @PostConstruct와 @PreDestroy 어노테이션은 라이프사이클 콜백을 받기위한 가장 좋은 방법으로 평가받는다. 이 어노테이션들을 사용한다는 것은 bean들이 스프링의 특정 인터페이스와 결합되지 않는다는 것을 의미한다. 더 자세한 내용은 '@PostConstruct와 @PreDestroy 사용하기'를 참고하라.

 만약 JSR-250을 쓰지 않기를 원하는 동시에 결합도를 없애고 싶다면, 'init-method'와 'destroy-method' bean 정의 메타데이터를 사용하면 된다.

 

내부적으로, 스프링 프레임워크는 적절한 메소드를 찾아서 호출해주는 콜백 인터페이스들을 처리하기 위해 BeanPostProcessor 구현체를 사용한다. 만약 커스텀한 기능이 필요하거나 스프링이 기본적으로 제공하지 않는 라이프사이클 행위가 필요하다면 BeanPostProcessor를 구현하면된다. 더 자세한 내용은 '컨테이너의 확장가능한 사항들'을 참고하라.

 

초기화와 소멸 콜백과 더불어, 스프링의 관리를 받는 객체들은 Lifecycle 인터페이스도 구현할 수 있다. 이를 통해 객체들은 컨테이너 자체의 라이프사이클에 따르는 startup과 shutdown 과정에 참여할 수 있게 된다.

 

라이프사이클 콜백 인터페이스들은 이 장에서 설명될 것이다.