SPRING

[SPRING] Bean 생명주기 콜백 (PostConstruct / PreDestory)

집한구석 2022. 3. 2. 21:43
728x90

Bean 생명주기 콜백

  • 스프링 빈이 생성된 후 의존관계 주입이 완료되거나 죽기 직전에 스프링 빈안에 있는 메서드를 호출해주는 기능
  • 스프링은 3가지 방법으로 빈 생명주기 콜백을 지원함
  • 인터페이스 (InitializingBean, DisposableBean), 설정정보 초기화 메서드 종료 메서드 지정, 어노테이션 사용 (PostConstruct, PreDestroy)

Bean의 이벤트 라이프사이클

컨테이너 생성 -> 빈생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료

스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공하며 또한 컨테이너가 종료되기 직전에 소멸 콜백을 줌, 해당 과정을 통하여 안전하게 종료작업을 진행하게 됨

  • 초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출
  • 소멸전 콜백 : 빈이 소멸되기 직전에 호출 

PostConstruct / PreDestory

  • 스프링에서 권장하는 기법 (생명주기 콜백기법 사용시 권장)
  • javax.annotation 패키지라서 스프링에 종속적인 기술이 아니라 JSR-250 자바 표준 기술
  • 컴포넌트 스캔과 잘어울림

PostConstruct

  • 빈의 초기화 부분에 해당, 빈이 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언
  • PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질때 실행됨

PreDestory

  • 마지막 소멸단계, 스프링 컨테이너에서 빈을 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션
  • close() 하기전에 실행 

PostConstruct / PreDestory 예시

@PostConstruct
public void init() {
	System.out.println("초기화")
}

@PreDestroy
public void destroy() {
	System.out.println("종료")
}

'SPRING' 카테고리의 다른 글

[SPRING] WEBFLUX 리액티브 오퍼레이션 정리  (0) 2022.05.08
[SPRING] JPA 쿼리메소드 요약  (0) 2022.04.19
[SPRING] Transaction Propagation  (0) 2021.09.22
[SPRING] AOP  (0) 2021.07.31
[SPRING] Interceptor  (0) 2021.07.11