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

dons97님의 프로필 이미지
dons97

작성한 질문수

스프링 핵심 원리 - 기본편

[빈 생명주기 콜백 시작] 초기화에 관련해서 질문이 있습니다.

해결된 질문

작성

·

166

·

수정됨

0

안녕하세요.

영한님이 빈 생명 주기 콜백이란 강의에서 말씀해주신 내용과 관련해서 질문이 있어 연락드립니다.

위의 그림을 보시면 객체의 생성과 초기화를 분리하자고 되어 있습니다.

제가 이 문구를 이해한 바로는 생성자를 통해서 초기화를 하지 말고 setter함수를 통해서 초기화를 하자는 내용입니다.

그러나 이 초기화라는 개념이 모호합니다.

초기화의 목적은 객체가 사용가능하도록 만드는 것이라고 알고 있습니다.

그런면에서 속성값을 넣어주는 것은 초기화라고 생각합니다.

하지만 객체에 의존관계를 주입해주는 것도 구체적인 값을 부여해주는 것이기에 초기화라고 할 수 있습니다.

그렇다면 의존관계 주입도 setter로 하는게 좋다는 결론이 됩니다.

하지만 영한님의 이전 강의 '생성자 주입을 선택해라!' 편에서 말씀해주셨듯이 의존관계의 경우 생성자 주입을 선택하는 것이 좋다는 말씀하셨습니다.

여기에 대해 제가 결론을 내린 바로는 속성값을 넣어주는 것과 의존관계 주입 모두 초기화인데 속성값을 넣어주는 것은 setter를 통해 의존관계 주입은 생성자 주입을 통해 라는 것입니다. 속성값을 setter로 넣어주는 이유는 그값이 변할 수 있기 때문이고 생성자 주입을 사용하는 이유는 보통은 객체가 변할 일이 없기 때문일 것입니다.

방금전 제가 내린 초기화에 대한 결론이 맞는지 궁금합니다.

감사합니다.

답변 1

0

안녕하세요 dons97 님, 인프런 AI 인턴이에요.

빈 생명주기 콜백과 초기화에 관한 문의에 대해 답변드리겠습니다.

생성자를 통한 초기화와 setter 함수를 통한 초기화는 둘 다 초기화의 방법이라고 볼 수 있습니다. 하지만 생성자 주입은 의존관계를 주입할 때 주로 사용되는 방법이며, 속성값을 넣어주는 것은 객체의 초기 상태를 설정하는데 사용됩니다.

속성값을 setter 함수를 통해 초기화하는 이유는 해당 속성값이 변경될 수 있는 경우에 유리합니다. 반면에 생성자 주입은 객체의 의존관계를 설정하는 데에 적합한 방법입니다.

결론적으로, 속성값 초기화를 위해서는 setter 함수를 사용하고, 의존관계를 설정하기 위해서는 생성자 주입을 사용하는 것이 일반적인 사용 방법입니다. 해당 내용은 영한님의 이전 강의에서도 언급되었던 내용이기도 합니다.

제가 제공하는 답변이 도움이 되셨길 바랍니다. 추가적인 질문이 있으시면 언제든지 여쭤주세요. 감사합니다.

dons97님의 프로필 이미지
dons97
질문자

네, 그렇군요.

의존관계 주입에는 생성자 주입, 속성값 초기화는 setter 함수가 적합하군요.

제가 질문을 조금 모호한게 한 것은 아닐까 걱정했는데 명확하게 답변을 주셔서 감사해요.

dons97님의 프로필 이미지
dons97

작성한 질문수

질문하기