inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 통합 테스트

변경된 테스트에서 MemberRepository를 주입받는 코드의 용도

384

이서우

작성한 질문수 1

3

안녕하세요!

강의에서 기존 테스트를 통합 테스트로 변경하면서 생성자 주입 코드가 필드 주입 코드로 변경되었는데요

@Autowired MemberService memberService;
@Autowired MemberRepository memberRepository;

필드 주입으로 변경한 후 MemberRepository를 Autowired 받는 부분은 주석 처리를 해도 테스트 코드가 정상적으로 수행되더라고요

    @Autowired MemberService memberService;
// @Autowired MemberRepository memberRepository;

생각을 해보니 MemberService를 Autowired할 수 있다는 건 MemberService 빈이 이미 생성되어 있다는 거고

MemberService 빈이 생성되려면 MemberService 생성자의 매개변수로 받을 MemberRepository가 필요하기 때문에 MemberRepository 빈도 이미 생성되어 있다는 거고

결국 MemberRepository 빈을 전달하면서 MemberService 빈을 생성했기 때문에 이후부터는 필드 주입이든 생성자 주입이든 MemberService를 Autowired하기 위해 MemberRepository가 함께 쓰이지 않아도 될 것 같더라고요

혹시 아니라면 MemberRepository를 주입받는 코드의 용도가 따로 있는 건가요?

java MVC spring-boot spring

답변 4

1

이서우

아직 뭐가 맞는 건지 확신이 들지 않는 단계라 헷갈렸는데 답변 감사합니다!

1

OMG

안녕하세요. 이서우님, 공식 서포터즈 OMG입니다.

생각을 해보니 MemberService를 Autowired할 수 있다는 건 MemberService 빈이 이미 생성되어 있다는 거고

MemberService 빈이 생성되려면 MemberService 생성자의 매개변수로 받을 MemberRepository가 필요하기 때문에 MemberRepository 빈도 이미 생성되어 있다는 거고

결국 MemberRepository 빈을 전달하면서 MemberService 빈을 생성했기 때문에 이후부터는 필드 주입이든 생성자 주입이든 MemberService를 Autowired하기 위해 MemberRepository가 함께 쓰이지 않아도 될 것 같더라고요

답변을 드리기에 앞서 설명하신 위에 내용을 다른 사람으로부터의 학습 없이 혼자서 개념을 접근하신거면 정말 대단하신거 같아요.

저 같은 경우는 말씀하신 내용을 인프런의 지식공유자 이신 백기선님의 '스프링 핵심 기술이'란 강의를 통해서 처음 알게 된 내용인데, 혼자서 그러한 개념을 접근해서 생각하신거면 정말 비상하신거 같군요....

답변을 드리자면, 말씀하신 내용이 맞고 마지막의

혹시 아니라면 MemberRepository를 주입받는 코드의 용도가 따로 있는 건가요?

이 부분은 해당 테스트에서 MemberRepository를 사용하지는 않지만 기존의 코드를 재사용 하는 과정에서 삭제하지 않고 남겨 두신 걸로 보입니다. 작성된 MemberServiceIntegrationTest에서 없어도 되는 객체인건 맞습니다.

감사합니다.

0

두랄루민

저도 memberRepository가 시커멓고 Test코드에 있지도 않은데 왜 돌아가는거지 싶었는데 그 전에 복사한 Test코드의 @BeforeEach와 @AfterEach인가 그 부분에 사용된 객체였습니다..

0

연필깎이

저는 그냥 넘어갔었는데 대단하시네요 저도 배워갑니다

..

0

76

2

Unused property.....

0

99

2

project JDK is misconfigured

0

132

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

83

2

단위/통합 테스트 버전충돌 문제

0

91

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

230

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

103

2

윈도우 build test오류 질문

1

102

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

99

2

테스트 실행 시 에러 질문

0

291

1

name을 통한 비교와 객체를 통한 비교

0

77

1

빌드 후 libs 없음

1

129

1

윈도우 gradlew.bat 에러

0

167

1

@PostMapping("/members/new")가 동작하지 않습니다

0

89

1

java static class와 kotlin class

0

79

1

스프링 DB연결

0

126

1

소요 시간

0

87

2

ddl.sql에 빨간 밑줄

1

102

2

welcome page 에러

0

183

3

잘 모르겠습니다.

0

164

2

fail을 똑같이 쳤는데 오류가 발생해요

0

156

2

index.html Welcome page

0

124

1

프로젝트 gradle-groovy ?

0

369

1

테스트코드 메서드명 한글

0

202

2