강의

멘토링

로드맵

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

ffbear님의 프로필 이미지
ffbear

작성한 질문수

스프링 핵심 원리 - 기본편

다양한 의존관계 주입 방법

의존성 주입에 대한 질문입니다.

작성

·

304

0

1. 

강의 3분 ~ 3분 30초에서 생성자를 통한 의존관계 주입을 설명하는 부분에서 딱 1번만 호출되고 불변한다고 하셨는데 그렇다면 그 1번의 시점은 스프링 컨테이너에 등록되는 시점이라고 봐도 되는걸까요?

2. 

강의 21분 30 ~ 22분에서 필드 주입에 대해서 말씀하신 부분에 대해서 왜 OrderServiceImpl 에 파라미터가 있는 생성자가 있으면 OrderServiceImplTest 의 fieldInjectionTest 에서 오류가 나는지 궁금합니다. 

3. 
강의 21분 44초에서 왜 OrderServiceImplTest 에서 NPE 에러가 뜨는지 궁급합니다. 
 
 

퀴즈

필드 주입(Field Injection) 방식이 일반적으로 권장되지 않는 이유는 무엇일까요?

불변성을 보장하기 어려워서

의존성 변경이 쉬워서

순수 Java 코드로 테스트하기 어려워서

설정 코드 작성이 복잡해서

답변 1

0

안녕하세요. ffbear님, 공식 서포터즈 David입니다.

1. 강의 3분 ~ 3분 30초에서 생성자를 통한 의존관계 주입을 설명하는 부분에서 딱 1번만 호출되고 불변한다고 하셨는데 그렇다면 그 1번의 시점은 스프링 컨테이너에 등록되는 시점이라고 봐도 되는걸까요?

=> 네, 맞습니다. OrderServiceImpl이 생성되는 시점입니다.

2. 강의 21분 30 ~ 22분에서 필드 주입에 대해서 말씀하신 부분에 대해서 왜 OrderServiceImpl 에 파라미터가 있는 생성자가 있으면 OrderServiceImplTest 의 fieldInjectionTest 에서 오류가 나는지 궁금합니다. 

=> 3번에서 함께 설명해드리겠습니다.

3. 강의 21분 44초에서 왜 OrderServiceImplTest 에서 NPE 에러가 뜨는지 궁급합니다. 

=> OrderServiceImpl은 필드주입을 받고 있습니다. 스프링 컨테이너를 이용하지 않고 기본 생성자를 사용하여 OrderServiceImpl을 만들면 스프링 컨테이너로부터 필드 주입을 받아야 하는 memberRepository, discountPolicy는 아무것도 할당받지 않은 상태입니다.

이 상태에서 memberRepository에 접근하여 메서드를 호출하니 NPE가 터지는 것입니다.

 

감사합니다.

ffbear님의 프로필 이미지
ffbear

작성한 질문수

질문하기