티스토리 뷰

에러메세지

java.lang.NullPointerException: Parameter specified as non-null is null: method com.beside.backend.api.controller.v1.member.MemberController.getSignupCount, parameter loginType

어디선가.. 파라미터에 null 으로 값이 들어왔다는 에러

 

어디서부터 null 이 들어간건지 null...찾으러간다.

 

 

원인

기간, 로그인 타입 별 회원가입한 사용자 수에 대한 통계를 내던 도중 발생 !!

 

기간은 반드시 들어가는 데이터고, 

로그인 타입은 선택사항이다. 즉, value 값을 안쓰면 여기서 null 로 넘어간다는 의미.

에러 로그에 맞게 떡하니 여기서 null 값을 넘기고 있다.

 

 

해결

kotlin 은 null 처리가 참~ 예민한 만큼 처리하는 방법은 또 기막히게 편하다.

타입에 ? 연산자로 null 이 될 수 있음을 미리 선언한다.

 

 

controller

@GetMapping("/members/count")
fun getSignupCount(@RequestParam period: Period, loginType: LoginType?): ResponseEntity<ResultResponse> {
    memberService.getSignupStatistics(period, loginType)

파라미터의 타입인 LoginType 에 ? 연산자를 붙여 null 이 들어올 수도 있다는 사실을 알려준다.

 

 

service

@Transactional(readOnly = true)
fun getSignupStatistics(period: Period, loginType: LoginType?): StatisticsResponse {
	// ...
    val count = memberCustomRepository.countSignupByPeriod(startDate, endDate, loginType)
    return StatisticsResponse(startDate, endDate, count)
}

서비스로 받아주는 파라미터의 LoginType 에도 ? 연산자를 붙여주고

 

 

memberCustomerRepository

fun countSignupByPeriod(startDate: LocalDateTime, endDate:LocalDateTime, loginType: LoginType?): Long {
    return from(members)

query 문에서 받아주는 파라미터까지 모두 동일하게 ? 를 붙여주면 null 처리를 할 수 있다.

 

 

한마디로 저 파라미터로 받아오는 값에는 모두 동일하게 ? 연산자로 null 이 들어올 수 있음을 알려주면 된다!

 

 

 

코틀린.. 널... 어쩜좋니

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함