취뽀몽

[Spring Error] Repository NullPointerException, Cannot invoke ~ because ~repository is null 본문

오류

[Spring Error] Repository NullPointerException, Cannot invoke ~ because ~repository is null

허몽구 2023. 6. 14. 20:27

새로운 프로젝트를 진행하며 회원가입 api를 실행했는데 Cannot invoke ~ because ~repository is null 이런 오류가 발생했다.

 

public interface AdminRepository extends JpaRepository<Admin, Long> {
    Admin findByEmail(String email);
}

레포지토리를 확인해보니 제대로 설정 되어있었는데, 어디서 발생했을까 싶어 레포지토리를 주입받는 클래스들을 확인해봤다.

 

@Service
@RequiredArgsConstructor
public class AdminService {
    private AdminRepository adminRepository;

    @Transactional
    public JoinResponse create(JoinRequest request){
        Admin admin = Admin.builder()
                .email(request.getEmail())
                .password(request.getPassword())
                .build();

        adminRepository.save(admin);

        return JoinResponse.of(admin.getEmail(), admin.getPassword());
    }

확인해보니 서비스단에서 @RequiredArgsConstructor를 사용해놓고 접근자를 final로 설정해두지 않았다.

 

@Service
@RequiredArgsConstructor
public class AdminService {
    private final AdminRepository adminRepository;

    @Transactional
    public JoinResponse create(JoinRequest request){
        Admin admin = Admin.builder()
                .email(request.getEmail())
                .password(request.getPassword())
                .build();

        adminRepository.save(admin);

        return JoinResponse.of(admin.getEmail(), admin.getPassword());
    }

final을 선언하고 돌려보니 정상적으로 작동했다.

 

포스트맨에서도 정상적으로 회원가입 되는 걸 볼 수 있다!

 

@Autowired 말고 @RequiredArgsConstructor를 사용해서 주입받는 사람들은 final 접근자를 붙였는지 확인해보면 될 것 같다.