Programming/Spring

[Spring] 스프링 빈 생명 주기에 대해서 (Spring Bean Life Cycle)

JeongKyun 2022. 8. 8.
반응형

서론


보통 스프링 빈이 생성되거나 소멸될 때 특정한 작업을 하고싶은 경우가 있다. 예를 들어, 빈이 생성될 때 데이터베이스 커넥션 풀을 미리 생성하는 경우가 있다.

 

이러하게 빈이 생성되거나 종료될 때 빈의 라이프 사이클을 관리하는데 유용한 @PostConstruct, @PostDestroy 어노테이션을 사용하여 어떻게 작업을 진행하는지 알아보려한다.

 

 

스프링 빈의 라이프사이클

  1. 스프링 컨테이너 생성
  2. 빈 생성
  3. 의존관계 주입
  4. 초기화 콜백
  5. 사용
  6. 소멸 전 콜백
  7. 스프링 종료

초기화 콜백: 빈이 생성되고 빈의 의존관계 주입이 완료된 후 호출되는 것을 말한다.

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

 


 

@PostConstruct란?


@PostConstruct
public void init() {
	System.out.println("초기화 메서드 호출")
}
...

@PreDestroy
public void destroy() {
	System.out.println("종료 메서드 호출")
}

 

특징

  • 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메서드 위에 선언한다.
  • @PostContruct가 붙은 메서드는 WAS가 띄어질 때 실행된다. 

 

 

장점 (왜 사용?)

  • 빈이 초기화 됨과 동시에 의존성을 확인할 수 있다.
  • bean lifecycle에서 오직 한번만 수행된다는 것을 보장할 수 있다는 특징이 있어서 해당 부분을 활용하여 bean이 여러번 초기화 되는것을 방지할 수 있다.

 


 

@PreDestroy란?


@PreDestroy
public void destroy() {
	System.out.println("종료 메서드 호출")
}
...

 

특징

  • 마지막 소멸 단계에 해당된다.
  • 스프링 컨테이너에서 스프링 빈(객체)을 제거하기 전에 해야할 작업이 있을 때 메서드 위에 선언한다.
  • close()하기 직전에 실행한다.

댓글

💲 많이 본 글