빈 생명주기 콜백

박지원·2024년 2월 14일

Spring

목록 보기
6/9

테이터 베이스 커넥션 풀이나 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 해두고, 종료 시점에 연결을 종료하기 위해선, 객체의 초기화 종료 작업 필요

스프링 빈 이벤트 라이프 사이클

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

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

!!! 객체의 생성과 초기화 분리하자 !!!

  • 유지보수 관점에서 좋음
  • 외부 커넥션 최초의 연결이 있고 난 후로 초기화를 지연시킬 수 있음

스프링이 지원하는 빈 생명 주기 콜백

인터페이스 InitializaingBean, DisposableBean

  • 단점
    - 스프링 전용 인터페이스에 의존
    • 메서드 이름 변경 x
    • 외부 라이브버리 적용 x

빈 등록 초기화, 소멸 메서드 지정

@Bean(initMethod = "init" , destoryMethod = "clodse" )
  • 특징
    - 메서드 이름은 자유롭다
    • 스프링 빈이 스프링 코드에 의존 x
    • 외부 라이브러리에서도 초기화 , 종료 메서드 사용 가능
  • 종료 메서드 추론
    - 라이브러리는 대부분 close, shutdown 이라는 이름의 종료 메서드 사용
    • @Bean 의 destoryMethod 는 기본값이 (inferred) 로 등록
    • close,shutdown 이름의 메서드 자동 호출
    • 스프링 빈으로 등록하면, 종료 메서드 따로 호출할 필요 X

    @PostConstruct, @PreDestory -> 이 방법 사용하자 !

  • 특징
    - 스프링이 아닌 다른 컨테이너에서도 동작
    • 컴포넌트 스캔과 잘 어울린다
    • 외부 라이브러리에 적용 x -> 필요하면 빈 등록 초기화, 소멸 메서드 지정하자

0개의 댓글