Backend/Spring | Spring Boot

[SpringBoot] @PostConstructd와 @PreDestroy

호_두씨 2024. 2. 22. 15:58

왜 사용하는가?

먼저 스프링 빈의 이벤트 사이클을 알아보자

 

스프링 빈의 이벤트 사이클

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

초기화 콜백: 빈이 생성되고 빈의 의존 관계 주입이 완료된 후 호출됩니다.

소멸전 콜백: 빈이 소멸되기 직전에 호출됩니다.

 

-> 스프링 빈 생명주기 콜백 사용 방법 중에 하나가 @PostConstruct 와 @PreDestroy이다.

 

 

 

@PostConstruct

  • 객체의 초기화 부분
  • 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드에 적용
  • WAS가 띄워질때 bean이 생성된 다음 딱 한번만 실행
@PostConstruct
public void init() {
	System.out.println("초기화 메서드 호출")
}

 

@PreDestroy

  • 마지막 소멸 단계
  • 스프링 컨테이너에서 객체(빈)을 제거하기 전에 해야할 작업이 있는 메소드에 적용
  • close()하기 직전에 실행
@PreDestroy
public void destroy() {
	System.out.println("종료 메서드 호출")
}