← 질문 목록
#129깊이 0
빈 초기화 로직은 어느 시점에 실행해야 하는가?
의존성 주입이 끝난 뒤 초기화 콜백에서 실행해야 한다. 생성자에서는 모든 주입과 컨테이너 후처리가 끝났다고 보장할 수 없다.
컨테이너→빈
인스턴스를 만들고 의존성을 주입한다
빈 후처리기→빈
초기화 전 처리를 한다
컨테이너→빈
@PostConstruct 등 콜백을 호출한다
빈 후처리기→빈
프록시 등 초기화 후 처리를 한다
초기화 콜백은 @PostConstruct, InitializingBean, initMethod 순서로 호출된다. 애플리케이션 로직은 스프링 인터페이스보다 애너테이션이나 설정 콜백에 두는 편이 덜 결합된다.
종료 때는 @PreDestroy 같은 소멸 콜백이 실행된다. 다만 prototype 빈은 생성 뒤 컨테이너가 추적하지 않으므로 호출자가 정리해야 한다.