• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

MemberServiceV1 @RequiredArgsConstructor 질문입니다

23.04.12 11:57 작성 조회수 279

0

@RequiredArgsConstructor

이 애노테이션은 final이 붙은 변수의 생성자를 자동으로 생성해주고, 생성자가 하나만 있다면 @AutoWired를 생략할 수 있다고 알고 있습니다.

private final MemberRepositoryV1 memberRepository;

근데 여기서, MemberRepositoryV1가 Bean으로 등록되지 않았는데 어떻게 자동으로 주입을 받을 수 있는 것이죠?

답변 1

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2023.04.13

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

@RequiredArgsConstructor는 결국 아래와 같은 생성자를 만들어주는 것이며, 본 강의에서는 MemberServiceV1Test에서 보시면 아시겠지만 직접 new로 생성합니다.

public class MemberServiceV1 {

    private final MemberRepositoryV1 memberRepository;

    public MemberServiceV1(MemberRepositoryV1 memberRepository) {
        this.memberRepository = memberRepository;
    }
class MemberServiceV1Test {

    private MemberRepositoryV1 memberRepository;
    private MemberServiceV1 memberService;

    @BeforeEach
    void before() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);
        memberRepository = new MemberRepositoryV1(dataSource);
        memberService = new MemberServiceV1(memberRepository);
    }

스프링 빈으로 등록하지 않았기 때문에 스프링이 제공하는 주입은 발생하지 않습니다.
.
감사합니다.