작성
·
133
0
안녕하세요~ 강의잘보고 있습니다!!!
강의를 듣다가 의존관계(DI) 주입관련해서 의문이 생겼습니다.
저는 기존에 @Autowired 어노테이션을 사용하여 의존관계를 설정하였는데
김영한님 뿐만 아니라 다른 블로그를 찾아봐도 생성자 주입을 통해 DI 설정을 하고 있는데
Autowired를 사용하지않고 생성자 주입했을 때의 장점을 알려주셨으면 좋겠습니다 ㅎㅎ
답변 1
0
안녕하세요. Kim님^^ 좋은 질문입니다.
이게 사실 좋은 객체지향 설계란 무엇일까? 객체지향 설계와 DI는 무슨 관계가 있을까?
사실 이런 본질적인 깨닮음이 필요합니다.
간단하게 예를 들면 필드에 @Autowired를 사용하면, 해당 객체를 다른 객체로 변경하기가 참 어렵습니다.
반면에 생성자 주입을 사용하면, 외부에서 다른 객체를 편리하게 주입할 수 있다는 장점이 있습니다.
그래서 예를 드면 테스트 케이스 같은 것에 API 통신이 필요한 부분이 있다면, 이 부분을 mock 객체로 변경해서 테스트를 외부 시스템의 영향 없이 안전하게 처리할 수 있는 것이지요.
제가 8월 중에 출시 준비를 하고 있는 스프링 핵심 원리에서 이 부분을 깊이있게 다룰 예정입니다. 그래서 근본적으로 DI가 왜 필요한지 핵심 원리부터 실제 실무에서 어떻게 주로 사용하는게 좋은 방법인지도 설명드릴 예정입니다^^
감사합니다.