본문 바로가기
Spring Boot 개념 정리

빈 생명주기 콜백 핵심 내용 이해하기

by 반오십 코린이 2023. 2. 19.
728x90
스프링 컨테이너의 존재 이유는?

 

 객체들을 관리하는 행위를 컨테이너에서 진행한다는 것. 객체를 생성, 소멸까지의 관리를

개발자가 아닌 컨테이너가 대신 해주기 때문에 개발자는 로직 관리에만 집중할 수 있다.


스프링 Bean LifeCycle

 

 db연결, 네트워크 소켓 연결 등 시작 시점에 미리 연결한 뒤 어플리케이션 종료시점에 연결을 종료해야 하는 경우

객체의 초기화 및 종료 작업이 필요하다. 

그런데 어떤 타이밍에 초기화를 하고 종료할지에 대한 정보가 콜백이다.

스프링 컨테이너 생성 → 스프링 Bean 생성 → 의존관계 주입 → 초기화 콜백 메서드 호출 → 초기화(사용)
소멸전 콜백 메서드 호출 → 스프링 종료

Bean 라이프 사이클을 압축시키기 위해 생성자 주입을 통해 객체 생성과 의존관계 주입을 한번에 처리하면
더 좋지 않을까?

 

 Solid 원칙 중에 SRP라는 개념이 있다.

하나의 클래스는 하나의 책임만을 져야한다는 것.

그렇기에 클래스 마다 역할을 나누는 이유도 있고

더 디테일하게 들어가면 생성자는 객체를 생성하는 역할, 초기화는 이런 값들을 이용해 외부 커넥션과 연결하는 등

의 무거운 역할을 수행한다.

이렇기에 한번에 객체 생성과 초기화를 하는 것 보다 명확하게 나누는 것이 유지보수 관점에서 좋음.

 

 객체를 생성해놓고 나중에서야 초기화를 진행하는 예시가 있을 수 있는데

이 경우에도 분리하는 것이 이득.(지연 초기화?라고 하는듯)


 

728x90