Spring Boot 개념 정리

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

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

 

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

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


스프링 Bean LifeCycle

 

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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


 

728x90