인프런 커뮤니티 질문&답변

georgek1205님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

인터페이스 InitializingBean, DisposableBean

connect()에 url이 null이 안나오는이유

작성

·

168

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예

[질문 내용]

안녕하세요 이 강의와 이전강의를 돌려가면서보는중인데도 햇갈리는게있어서 제가 생각하는게 맞는지 궁금해서 질문드립니다.
1. 바로이전강의내용에서는 connect() 와 call()를 afterPropertiesSet()에 넣지않은상태에서 코드를 실행하면 url이 null이 뜨는상태였습니다. 그 이유가 그러면 connect() 와 call()함수가 빈 라이프사이클인 "스프링 빈 생성" 중 NetworkClient 생성자안에 있어서 url을 set하기 전 단계에 실행되서 null이 뜨는거고, null이 안뜨고 url이 제대로 나오는 상황은 빈이 완벽하게 생성이 된 이후에 connect() call()이 실행되서 인가요? 제 질문이 잘 전달이된건지 잘 모르겠네요. 빈생성이 되기 전에 connect한거랑 빈생성이완벽하게된후(url도 set된상황) 그 차이인가요?

2. 그리고 바로전강의에서 상태출력을 빈생성과정에 출력하신거라 null이 나오는거지 결국 setUrl은 결국 실행되서 url의 최후 상태는 null이 아니지않나요? 그냥 라이프사이클에 중점을두시는 강의인거맞나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

georgek1205님의 질문은 스프링 프레임워크 내에서 빈의 초기화 과정과, 특정 메서드(call(), connect()) 실행 시점에 따라 url 변수의 값이 어떻게 다르게 나타나는지에 대한 궁금증으로 이해됩니다.

관련하여, NetworkClient에서 setUrl 질문합니다! 제목의 질문 글이 유사한 맥락을 다루고 있습니다. 이 질문에서는 NetworkClient 객체 생성 후, 생성자 내에서 connect 메서드를 호출할 때부터 시작하여, 외부 modifier(수정자)를 통해 setUrl을 호출하고 난 이후까지의 과정을 설명합니다. 글에 달린 답변은 객체가 생성되는 시점에는 url 변수가 초기화되지 않아 null이 출력되며, setUrl() 메서드가 호출된 후에 url 변수가 적절히 초기화되어 null이 아닌 값을 출력하게 되는 과정을 상세히 설명하고 있습니다.

이론적으로, 스프링 빈의 생명주기에 따라 객체가 생성되고 의존성이 주입된 후, 적절한 초기화 메서드(@PostConstruct 또는 InitializingBean.afterPropertiesSet()과 같은)가 호출되어야 비로소 모든 필드가 올바로 초기화됩니다. 따라서, 생성자만으로는 해당 객체의 의존성 주입과 다양한 필드의 초기화 작업을 완전하게 수행하기 어렵고, 결과적으로 이후에 실행되어야 할 코드가 정상적으로 작동하기 위한 준비가 덜 된 상태로 남게 됩니다.

질문하신 내용에 대한 이해를 돕기 위해 NetworkClient에서 setUrl 질문합니다!를 참고하시는 것을 추천드립니다. 여기에 나온 내용은 객체의 생성과 초기화, 그리고 의존성 주입이 어떻게 이루어져야 하는지에 대한 기본적인 원리에 대해 설명하고 있으며, 스프링의 빈 생명주기를 이해하기 위한 좋은 참고 자료가 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.