SPRING/Spring Basic

[Spring] Bean 생명주기 콜백 ( @PostConstruct, @PreDestory )

IT록흐 2024. 2. 6. 14:12
반응형

 

Bean은 [ 객체 생성 -> 의존관계 주입 -> 스프링 컨테이너 상주 -> 소멸 ] 의 과정을 거친다.

 

Bean은 스프링이 대신 생성해주므로, 초기화 작업과 종료 작업이 원할히 진행 될 수 있도록, 스프링은 의존관계 주입 된 이후와 소멸되기 직전에 개발자가 특정한 로직을 수행시킬 수 있도록 '콜백(CallBack)'을 제공한다.

 

초기화 작업은 생성자 로직에 포함시킬 수는 있지만 초기화 과정이 무거운 경우, 객체 생성과 초기화 작업을 분리하는 것이 좋다. 이 경우, Spring이 제공하는 초기화 콜백을 사용하는 것이 좋다. 콜백을 제공하는 방식은 3가지가 있다. 

 

1) InitializingBean, DisposableBean 인터페이스

2) @Bean(initMethod = "init", destroyMethod = "close")

3) @PostConstruct, @PreConstruct

 

 

2)와 3)이 가장 권장되는 방법이다. 

 

1)은 스프링 인터페이스가 제공하는 콜백 메소드를 오버라이딩해야 하므로, 유연하지 못하고 스프링 인터페이스에 의존하게 된다.

 

 

@Bean(initMethod = "init", destroyMethod = "close")

 

소스를 수정할 수 없는 외부 라이브러리 클래스의 Bean을 생성할 때 사용한다. initMethod와 destroyMethod에 메소드명을 설정으로 넣으면 콜백시점에 자동으로 호출되어 로직을 수행한다. 

 

@PostConstruct, @PreConstruct

 

개발자가 직접 작성한 코드에 적용하는 어노테이션이다. 초기화 메소드와 소멸 메소드 위에 어노테이션을 선언하면 된다. @PostConstruct와 @PreConstruct는 스프링에서 제공하는 어노테이션이 아니므로, 스프링에 의존하지도 않는다. 또한 내가 원하는 메소드 위에 선언만 하면 되니 유연하다. 

 

 

 


 

 

 

참고자료

 

스프링 핵심 원리 - 고급편 강의 - 인프런

스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., 핵심 디자인 패턴, 쓰레드 로컬, 스프링 AOP스프링의 3가지 핵심 고급 개념 이해하기 📢 수강

www.inflearn.com

 

 

 

 

 

 

반응형