Spring 8. 스프링 빈 라이프사이클
8. 스프링 빈 라이프사이클

빈 라이프 사이클

  1. 스프링 빈 컨테이너 생성
  2. 스프링 빈 생성 (생성자 주입은 이때 된다.)
  3. 의존관계 주입 (필드, setter, 메소드 주입)
  4. 초기화 콜백
  5. 사용
  6. 소멸전 콜백
  7. 스프링 종료
  • 참고: 객체의 생성과 초기화를 분리하자.
    • 생성은 메모리에 할당하는 것
    • 초기화는 생성자에서 받은 값을 이용해 외부 커넥션 등 무거운 동작을 수행하는 것

라이프 사이클 사용법

  • 인터페이스 (InitializingBean, DisposableBean)
  • 설정 정보에 초기화 메소드, 종료 메소드 지정
  • @PostConstruct, @PreDestroy 어노테이션 지원

인터페이스 방식의 단점

  • 스프링에서만 유효하다. 스프링 의존적
  • 메소드의 이름을 못바꾼다.
    • 인터페이스는 초기 단계의 방법

빈 등록 초기화, 소멸 메소드 등록

@Bean(initMethod = "init", destroyMethod="close")
  • 스프링 빈이 스프링 코드에 의존적이지 않음.
  • 외부라이브러리에서도 사용 가능
  • destroyMethod에는 특별한 기능이 있다. 기본값은 (inferred)로 추론해서 사용하기도한다.
    • close, shutdown 메소드가 있으면 자동으로 호출된다.
    • 자동으로 호출되기 싫으면 destroyMethod="" 빈문자열로 적어야한다.

@PostConstruct, @PreDestroy (권장)

  • 최신 스프링에서 권장, 어노테이션 하나로 아주 편리
  • JSR-250이라는 자바 표준. 스프링 말고 다른 컨테이너에서도 정상 작동
  • 외부 라이브러리에는 적용안되는 단점

© 2025 seokh1213

LinkedIn LinkedIn GitHub