Inflearn brand logo image

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

이DH님의 프로필 이미지
이DH

작성한 질문수

옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트

DI 방법은 사실 3가지 (소름)

이유가 궁금합니다 (DI 방법 3가지 !)

작성

·

35

1

@Autowired 의 방법이

1. 세터 주입방식
2. 필드 주입방식

  1. 생성자 주입방식

으로 바꼈다고 하시는데

2번에서 3번으로 넘어간 이유 한참 고민해봤는데

1번의 장점을 가져올려고 하지 않았나??
아무나 접근할수 있다는 단점도 되지만, 테스트나 이런거할때 접근이 쉬우니까 테스트도 편하다?

근데 2번은 private이라 접근이 불편하다? 힘들다? 단점이 있어서 그 단점을 보완하는거 아닌가

 

선생님 답변이 궁금합니다

답변 2

1

안녕하세요, 인프런 AI 인턴입니다.
이DH님께서 질문하신 생성자 주입 방식이 선호되는 이유에 대해 설명드리겠습니다.

생성자 주입 방식이 선호되는 가장 큰 이유 중 하나는 불변성입니다. 생성자 주입을 사용하면 의존성이 클래스가 생성될 때 주입되고, 이후에는 변경될 수 없습니다. 이는 코드의 안정성 및 예측 가능성을 높이는 데 도움이 됩니다.

또한, 생성자 주입은 주입되는 필드를 final로 만들 수 있도록 해주며, 이는 해당 필드가 한 번 초기화된 이후 변경되지 않음을 보장합니다. 이를 통해 코드를 더 안전하고 명확하게 작성할 수 있습니다.

필드 주입 방식의 경우, 비공개 필드에 직접 주입하기 때문에 외부에서 직접 접근하기 어렵고, 단위 테스트 시 객체를 생성하는 데 어려움이 있을 수 있습니다. 반면 세터 주입 방식은 주입이 더 쉽게 변경될 수 있어 테스트 등을 위해 유연하게 사용할 수 있지만, 주입되는 의존성이 외부에서 변경될 수 있다는 점에서 단점이 있습니다.

결론적으로, 생성자 주입을 통해 불변성과 명확한 의존성 관리가 가능하므로, 옳고 안정적인 코드 작성을 위해 많이 사용되고 있습니다.
추가적으로 더 자세한 내용은 Spring 공식 문서를 참고해 보시면 도움이 될 것입니다.

도움이 되셨길 바랍니다!

0

DH님~! 여기서 또 뵈어요 😊
한참 고민하셨다니, 감동인걸요? 개발자로 커리어를 이어갈 준비가 이미 되셨군요!! 🎉

 

정확히 보셨습니다. 1번의 장점을 가져오려 했어요.
말씀하신 것처럼 private이라 포기해야하는 점들이 꽤 많아요.
구글링 또는 GPT를 괴롭히면 최소 3~4가지는 나올텐데,
저는 그 중에서도 '테스트' 에 집중해보시길 추천 드립니다.

 

제가 한가지 과제(?)를 드려도 될까요? ..💕

스프링이 스프링 빈을 구분하는 방법
객체 지향의 특징
생성자 기법이 테스트 코드에서 좋은 이유

 

이 세 가지를 엮어서 생각해봐주세요.
기왕이면 블로그 포스팅 해보시면 너무 좋은 주제 입니다.

아마 지금까지 나와있는 옆집개발자 시리즈 2탄까지 보시면,
조금 힌트가 되실 지도 모르겠어요! ㅎㅎ

그래도~ 먼저 생각해보는 것 만큼 확실한 공부는 없으니
꼭 고민해봐주세요!!

 

우리 DH님 덕분에 정말 좋은 내용을 같이 공유 할 수 있게 되었네요.
너무너무 감사합니다🫶🏻

앞으로도 언제든 찾아주세요!! 최대한 빠르게 찾아오겠습니다.
무더운 날씨 건강 잘 챙기시구요~! 늘 행운이 가득한 여름 되시길 진심으로 바랄게요. 🍀

- 옆집개발자 김송아 드림

 

💌 To. 지나가던 모든 분들께
옆집개발자들(해당 강의 수강생을 뜻하는 말입니다)이 아니셔도 좋습니다.
스프링 개발자이시라면, 생각하기 너무 좋은 주제이니 꼭 한번 스스로 적어보셔요!

이DH님의 프로필 이미지
이DH

작성한 질문수

질문하기