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

차도범님의 프로필 이미지
차도범

작성한 질문수

스프링 핵심 원리 - 기본편

@Configuration과 싱글톤

memberService.getMemberRepository(); 오류가 나요 도와주세

작성

·

587

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

여긴 memberServiceImpl.class

package hello.core.member;

public class MemberServiceImpl implements MemberService {

private final MemberRepository memberRepository;

public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Override
public void join(Member member) {
memberRepository.save(member);
}

@Override
public Member findMember(Long memberId) {
return memberRepository.findById(memberId);
}


//test
public MemberRepository getMemberRepository() {
return memberRepository;
}

}

요긴 ConfigurationSingletonTest.class

package hello.coresingleton;

import hello.core.AppConfig;
import hello.core.member.MemberRepository;
import hello.core.member.MemberService;
import hello.core.member.MemberServiceImpl;
import hello.core.order.OrderServiceImpl;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import static org.assertj.core.api.Assertions.assertThat;

public class ConfigurationSingletonTest {

@Test
void configurationTest() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

MemberService memberService = ac.getBean("memberService", MemberServiceImpl.class);
OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class);
MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class);

MemberRepository memberRepository1 = memberService.getMemberRepository(); //여기
MemberRepository memberRepository2 = orderService.getMemberRepository();

System.out.println("memberService -> memberRepository = " + memberRepository1);
System.out.println("memberService -> memberRepository = " + memberRepository2);
System.out.println("memberRepository = " + memberRepository);

assertThat(MemberService.getMemberService()).isSameAs(memberRepository); //여기
assertThat(orderService.getMemberRepository()).isSameAs(memberRepository);

}
}

오류내용

Cannot resolve method 'getMemberRepository' in 'MemberService'

Cannot resolve method 'getMemberService' in 'MemberService'

 

그대로 적었는데 왜 그런지 모르겠어요

답변 1

0

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

MemberService타입으로 빈을 받게 되면 MemberServiceImpl만을 위해 정의된 메서드는 호출할 수 없습니다.

만약 지금 작성하신 코드대로 동작되길 원하신다면 인터페이스에 해당 메서드에 대해 정의해 주셔야 합니다.

감사합니다.

차도범님의 프로필 이미지
차도범

작성한 질문수

질문하기