이번에는 Raw 타입으로 반환하던 것들을 리팩토링해보고자 한다.
@GetMapping("/view")
public ResponseEntity viewNotodo(@AuthenticationPrincipal Member member,@RequestParam String date) {
List<NotodoResponseDTO> response = notodoService.notodoView(member, date);
return new ResponseEntity(response, HttpStatus.OK);
}
기존의 코드는 다음처럼 컨트롤러에서 반환할 때 ResponseEntity로 반환하는데, Raw 타입으로 반환하고 있다.
Raw 타입을 사용하면 어떠한 타입도 넣을 수 있다는 장점이 있지만 프로그래밍에 편리함을 가져다주는 그 장점이 서비스의 장애를 일으키는 요인이 될 수 있다고 생각했다.
잘못된 타입을 사용했을 때 컴파일 시점에는 문제를 잡을 수 없지만, 런타임 시점에서 ClassCastException이 발생할 수 있다. 따라서 반환할 데이터 타입을 명시하도록 리팩토링 하였다.
따라서 변경한 코드는 다음과 같다.
@GetMapping("/view")
public ResponseEntity<List<NotodoResponseDTO>> viewNotodo(@AuthenticationPrincipal Member member,@RequestParam String date) {
List<NotodoResponseDTO> response = notodoService.notodoView(member, date);
return ResponseEntity.ok(response);
}
모든 메소드들이 Raw 타입으로 되어있어서 다 수정해주었다.