DevBoi

[Spring] 빈 라이프 사이클 본문

Develop/[Spring]

[Spring] 빈 라이프 사이클

HiSmith 2022. 3. 28. 12:31
반응형

스프링의 빈 라이프 싸이클은 아래와 같다.

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

 

해당 사이클에서 사용할 수 있는 콜백 함수들이 있다.

 

* 초기화 콜백 : 빈이 생성되고 빈의 의존관계가 주입이 완료된 이후 호출

* 소멸 전 콜백 : 빈이 소멸되기 전에 호출

 

스프링은 3가지 방법으로 빈 생명주기 콜백을 지원한다.

-인터페이스 (InitializingBean,  DisposableBean) 메소드 구현

  스프링 전용 인터페이스에 의존한다. 초기화,소멸 메서드의 이름을 변경할 수 없다. 고칠수없는 외부 라이브러리에 적용 불가

- 설정 정보에 초기화 메소드, 종료 메소드 지정

 

@PostConstruct, PreDestroy 어노테이션

최신 스프링에서 가장 권장하는 방법

애노테이션 하나만붙이면 되서 매우 편리, 자바 표준이라 다른 컨테이너에서도 동작

컴포넌트 스캔에 어울림

외부 라이브러리에 사용 불가, 외부 라이브러리에 사용하려면 @Bean의 기능을  사용해야한다.

 

만약에 빈의 기능을 사용하려면, 해당 메소드는

initMethod, destroyMethod를 사용할수 있다.

 

이러한 차이도, 외부 라이브러리는 Bean, 개발자가 컨트롤 가능한 빈은 Component로 하는 이유이기도 하다.

 

외부 라이브러리일 경우, 해당 과 같이 사용하면 된다.

장점은 메서드 이름 자유, 스프링 코드에 의존 x, 설정 정보를 사용하기 때문에 코드를 커스터마이징이 불가한

외부라이브러리에도 사용가능한 점들이 있다.

 

 

처음에 말한 스프링에서 권장하는 방법이다.

어노테이션만 붙이면 되기때뭉네 편리하고, 자바 표준이기때문에다른 컨테이너에서도 동작한다.

컴포넌트스캔에 어울리지만, 외부라이브러리에서 사용이 불가능하다.

반응형