• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

빈의 초기화 시점이 궁금합니다.

22.01.02 13:25 작성 조회수 237

0

안녕하세요 기선님, 아무도 알려주지 않는 내용의 좋은 강의를 해주셔서 감사합니다. 
로직이 이해가 안되서 고민을 했는데... 제가 이해한게 맞는지 궁금해서 질문드립니다.

@Autowired를 처리해주는 BeanPostProceesor의 구현체가
(빈을 인스턴스화 해주는) InitailizingBean을 감싸고 있어서,

postProcessBeforeInitialization 은 생성자에 붙은 @Autowired를 처리해서 생성을 도와주고
postProcessAfterInitialization 은 setter나 member variable에 붙은 @Autowired를 처리해서 주입해주는게 아닐까?
예상했습니다.

그런데 수업에서는 postProcessBeforeInitialization 에서 Intialization 전에 주입을 해준다는 것을 듣고 잘 못 이해했구나 생각했습니다.

다시 예상한 것은.. 빈 라이프사이클의 첫 번째 과정인 1. BeanNameAware's setBeanName 부터 이미 빈의 인스턴스는 생성이 되어 있고, 거기에 setBeanName, setBeanClassLoader 같은 설정들이 들어가서 빈을 구성해준다는 것입니다.

그리고 11번째 과정인 postProcessBeforeInitialization 에서 @Autowired 주입을 해줘서 Initialization을 끝마칩니다.
그리고 12번째 과정인 InitializingBean's afterPropertiesSet 에서 설정이 끝난 빈에 @PostConstruct를 통해 추가적인 코딩을 해줄 수 있는 것이라고 예상합니다.
postProcessAfterInitialization이 하는 역할은 잘 모르겠습니다..
제가 이해 한게 맞는지 궁금합니다.

좋은 강의를 찍어주셔서 감사합니다. 2022년 새해 복 많이 받으세요! 

답변 1

답변을 작성해보세요.

2

안녕하세요. 설명해주신 내용이 모두 맞는 것 같습니다. 좋은 "예상" 이구요. 그 "예상"을 저에게 질문하시는 것 보다 더 정확히 검증하고 싶으시다면 "디버거"를 사용해 보시면 좋겠습니다. 좋은 글 감사합니다.