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

terecal님의 프로필 이미지
terecal

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

멤버 테스트중 회원 가입 테스트시에 에러가 발생해서여

작성

·

4.3K

1

안녕하세여 최고의 자바 티처 김영한 선생님

 

멤버 서비스 계층까지 만들고 멤버 테스트에서 회원 가입하는데아래와 같은 에러가 발생해서여 어떻게 고치는게 맞는건지 잘몰겠어서여 ㅠ 같은 내용으로 메일과 프로젝트 압축 파일 첨부도 보냈어여 봐주시면 감사여

에러 내용:  

java.lang.NullPointerException: Cannot invoke "javax.persistence.EntityManager.createQuery(String, java.lang.Class)" because "this.em" is null

at jpabook.jpashop.repository.MemberRepository.findByName(MemberRepository.java:31)

at jpabook.jpashop.repository.MemberRepository$$FastClassBySpringCGLIB$$97f1c501.invoke(<generated>)

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)

at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)

at jpabook.jpashop.repository.MemberRepository$$EnhancerBySpringCGLIB$$d04a376a.findByName(<generated>)

at jpabook.jpashop.MemberService.MemberService.validateDuplicateMember(MemberService.java:29)

at jpabook.jpashop.MemberService.MemberService.join(MemberService.java:23)

답변 1

2

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

안녕하세요. terecal님

@RequiredArgsConstructor는 final이 있는 필드만 모아서 생성자를 만들어줍니다.

(스프링은 생성자가 딱 1개만 있으면 의존관계를 자동으로 주입해줍니다.)

memberRepository를 주입받지 못해서 Null 예외가 발생하네요.

final 키워드를 추가해주세요.

변경전

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class MemberService {

private MemberRepository memberRepository;

변경후

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class MemberService {

private final MemberRepository memberRepository;

감사합니다.

terecal님의 프로필 이미지
terecal

작성한 질문수

질문하기