빈 생명주기 콜백 시작
데이터베이스을 연결할 때나 애플리케이션이 시작하는 시점에 연결을 하고 종료 시점에 모두 종료하는 작업을 하려면
객체의 초기화 종료 작업이 필요하다.
이를 예제를 통해 알아보자


다음과 같이 Client 파일과 Test파일이 있을때
결과는

다음과 같이 다오게 된다.
코드를 보게되면 객체를 생성하는 단계에는 url이 없고 객체를 생성한 다음에 setUrl()이 호출되어야 url이 존재하게 된다.
스프링 빈은 이러한 라이프 사이클을 가지고 있다.
객체 생성 -> 의존관계 주입
초기화 작업은 의존관계 주입이 모두 완료되고 난 후 호출 되어야하는데 이 부분을 Spring에서 알려준다.
스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줘서 안전하게 종료 작업을 진행하게 된다.
스프링 빈의 이벤트 라이프 사이클
스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료
초기화 콜백 : 빈이 생성되고, 비느이 의존관계 주입이 완료된 후 호출
소멸전 콜백 : 빈이 소멸되기 직전에 호출
스프링은 생명주기 콜백 방식을 3가지로 지원한다.
1. interface(lnitializingBean , DisposableBean)
2. 설정 정보에 초기화 메서드, 종료 메서드 지정
3. @PostConstruct , @PreDestroy 애노테이션 지원
의 방법이 있는데 스프링에서 가장 권장하는 방법인 3번 방법을 한번 알아보자
@PostConstruct , PreDestroy
생각보다 간단한 방식이다.

@PostConstruct : 빈이 인스턴스화된 후에 호출되어야 함을 나타낸다 ----> 연결될 때
@PreDestroy : 빈이 종료되기전에 호출되어야 함을 나타낸다. ------> 종료할 때
다음과 같이 서버 연결할때 비어있는 url을 초기화해서

@PostConstruct , @PreDestroy 애노테이션을 사용해서 편리하게 초기화와 종료를 실핼 할 수 있다.
@PostConstruct , @PreDestroy 애노테이션 특징
- 최신 스프링에사 가장 권하는 방법
- 애노테이션 하나로 편하게 사용가능하다.
- 스프링에 종속된 기술이 아니고, 자바 표준으로 스프링이 아닌 다른 컨테이너에서도 동작한다
- 컴포넌트 스캔과 잘 어울린다.
- 하지만 단점도 있다 외부 라이브러리에 적용 불가
외부 라이브러리를 초기화 , 종료 해야하면 @Bean의 기능(initMethod , destroyMethod)을 사용하자
'Spring' 카테고리의 다른 글
[Spring] @Entity , @Embedded 간단하게 알아보기 (0) | 2023.07.27 |
---|---|
[Spring] 프로토타입 빈 특징 (0) | 2023.07.21 |
[Spring] 등록된 빈 모두 조회하기 (0) | 2023.07.19 |
[Spring] 조회한 빈이 2개 이상일 때 해결 방법 (0) | 2023.07.18 |
[Spring] Configuration과 싱글톤의 관계 2/2 (0) | 2023.07.16 |