작성
·
160
0
안녕하세요.
강의를 듣던 중, 코드를 그대로 따라했는데 OrderApp에서 MemberNullPointerException이 나와서 추적하던 중, 주문서비스와 회원서비스의 레퍼지토리가 따로따로인 것 같아서 생기는 오류라고 추측되어 질문드립니다 !
Me
public class AppConfig {
public MemberService memberService(){
return new MemberServiceImpl(new MemoryMemberRepository());
}
public OrderService orderService(){
return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());
}
}
상단은 AppConfig입니다.
각 회원 서비스와 멤버 서비스의 매개변수에는 new MemoryMemberRepository()로 되어있는데.. 각 새로운 인스턴스를 생성해서 생기는 오류인 것 같아서요.
public class OrderApp {
public static void main(String[] args) {
AppConfig appConfig = new AppConfig();
MemberService memberService = appConfig.memberService();
OrderService orderService = appConfig.orderService();
long memberId = 1L;
Member member = new Member(memberId, "memberA", Grade.VIP);
memberService.join(member);
Member findMember = memberService.findMember(1L);
System.out.println("new Member = " + member.getName());
System.out.println("find Member = " + findMember.getName());
System.out.println("find Member id = " + findMember.getId());
// Order order = orderService.createOrder(memberId, "itemA", 10000);
//
// System.out.println("order = " + order);
}
}
상단의 memberService 내의 findMember(1L)를 확인하기 위해 OrderApp을 돌려보면 findMember의 값이 잘 나옵니다. 그런데, orderService 내의 memberRepository를 참조하면 nullPointerException 오류가 납니다. 각 다른 저장소라 그런 것으로 보이는데 강의에서는 잘 돌아가는게 제가 모르는 부분이 어떤건지 싶네요..(제 환경에서는 돌아가지 않고 pdf를 그대로 복사붙여넣기 했는데 왜 그런가 싶네요.)