인프런
스프링 핵심 - 기본편
김영한
Section8_빈 생명주기 콜백
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행 → 객체의 초기화와 종료 작업 필요.
- NetworkClient는 애플리케이션 시작 시점에 Connect() 호출로 연결 맺기, 종료 시점에 disConnect() 호출로 연결 끊기
스프링 빈의 라이프 사이클
- 객체 생성 → 의존 관계 주입 (생성자 주입은 예외, 객체를 만들 때 이미 스프링 빈에 들어와야 함.)
- 객체 생성 후 의존 관계 주입이 다 끝나야 데이터 사용 준비 끝 → 초기화 작업
- 완료 시점을 알 수 있는 방법은 “콜백 메서드”
- 스프링 빈의 이벤트 라이프 사이클
- 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료
- 초기화 콜백 : 빈이 생성되고, 빈의 의존관계 주입 완료 후 호출.
- 소멸 전 콜백 : 빈이 소멸되기 직전에 호출.
- 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료
- 객체 생성과 초기화 분리 → SRP(단일 책임 원칙) ⇒ 유지 보수에 용이함.
빈 생명 주기 콜백 지원 3가지 방법
- 인터페이스(InitializingBean, DisposableBean)
- InitializingBean은 afterPropertiesSet() 메서드로 초기화 지원
- DisposableBean은 destroy() 메서드로 소멸 지원
- 이름 변경은 안됨, 스프링 전용 인터페이스, 외부 라이브러리에 적용 안됨
- 초창기 이후로는 잘 사용하지 않음.
2. 설정 정보에 초기화/종료 메서드 지정
- @Bean(initMethod=”init”, destroyMethod=”close”)
- 메서드 이름 변경 가능, 스프링 코드에 의존X, 외부 라이브러리에도 메서드 적용 가능
- destroyMethod의 default 값 → close, shutdown
3. @PostConstruct, @PreDestroy 어노테이션 지원
- @PostConstruct, @PreDestroy
- 최근 스프링에서 가장 권장(편리함)
- 하지만 유일한 단점은 외부 라이브러리에 사용 불가 (→ 2번 방법 사용)
'💻 백엔드개발 > Spring' 카테고리의 다른 글
MVC 패턴 (3) | 2024.11.01 |
---|---|
[Spring] Section9_빈 스코프 (0) | 2024.10.12 |
[Spring] Section7_의존관계 주입 (0) | 2024.10.12 |
[Spring] Section6_컴포넌트 스캔 (0) | 2024.10.12 |
[Spring] Section5_싱글톤 컨테이너 (0) | 2024.10.12 |