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

이기적인 개발자님의 프로필 이미지
이기적인 개발자

작성한 질문수

스프링 핵심 원리 - 기본편

관심사의 분리

OrderApp의 orderService와 memberService 내의 MemberRepository가 독립된 오브젝트가 아닌가요?

작성

·

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를 그대로 복사붙여넣기 했는데 왜 그런가 싶네요.)

답변 2

3

해결 되었습니다 ..! ㅠ

다른 수강생과 같은 이유였군요.

혹시나 같은 문제이신 분 있으실까봐 도움 되시라고 올립니다 !

hello.core.member.MemoryMemberRepository;

의 Hash Map이 static인지 보시면 될 것 같아요.

정적 변수이기에 데이터를 서로 공유가 가능하며, 위의 질문에 대한 문제가 해결 됩니다 !

private static Map<Long, Member> store = new HashMap<>();

0

김영한님의 프로필 이미지
김영한
지식공유자

잘 해결하셨습니다^^

이기적인 개발자님의 프로필 이미지
이기적인 개발자

작성한 질문수

질문하기