Spring/Java bean
스프링의 생명주기 콜백 지원 방법
수달하나
2021. 6. 30. 17:32
스프링 빈의 이벤트 라이프 사이클(Singleton Scope)
스프링 컨테이너 생성 ▶ 스프링 빈 생성 ▶ 의존관계 주입 ▶ 초기화 콜백 ▶ 사용 ▶ 소멸전 콜백 ▶ 스프링 종료
초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출
소멸전 콜백: 빈이 소멸되기 직전에 호출
스프링의 콜백 지원 방법 3가지
- 인터페이스(InitializingBean, DisposableBean)
인터페이스를 상속 받아서 생성과 소멸의 시기에 호출을 하는 방법.
이 인터페이스는 스프링 전용 인터페이스이기 때문에 스프링 전용 인터페이스에 의존한다.
초기화, 소멸 메서드의 이름을 변경할 수 없고 내가 코드를 고칠 수 없는 외부 라이브러리에 적용을 할 수 없다.
→ 예전에 사용하던 방식으로 거의 사용하지 않는다.
- 빈 등록 초기화, 소멸 메서드
메서드 이름을 자유롭게 줄 수 있고 스프링 빈이 스프링 코드에 의존하지 않는다.
코드가 아니라 설정 정보를 사용하기 때문에 코드를 고칠 수 없는 외부 라이브러리에도 초기화, 종료 메서드를 적용할 수 있다.
※ @Bean으로 등록할 때 일어나는 현상 → 스프링 빈으로 등록을 하면 종료 메서드는 따로 적어주지 않아도 된다.
- 애노테이션(@PostConstruct, @PreDestroy)
최신 스프링에서 가장 권장하는 방법이고 매우 편리하다.
단점은 외부 라이브러리에는 적용하지 못한다.
→ 현재는 이 방법을 사용해서 생명주기 콜백을 사용한다.