책 수정 화면 컨트롤러는 사실상 "읽기"와 동일하고 반환하는 뷰와 DTO만 다릅니다. 이럴 경우 read 메소드를 복사하는 것도 한 방법이지만 기왕 @ExceptionHandler를 만들었으므로 활용해 보겠습니다.
src/main/java > com.yse.dev.book > BookController.java
@GetMapping("/book/edit/{bookId}")
public ModelAndView edit(@PathVariable Integer bookId) throws NoSuchElementException {
ModelAndView mav = new ModelAndView();
BookEditResponseDTO bookEditResponseDTO = this.bookService.edit(bookId);
mav.addObject("bookEditResponseDTO", bookEditResponseDTO);
mav.setViewName("book/edit");
return mav;
}
try - catch 문이 사라졌으므로 코드가 훨씬 간결해지고 반복되는 코드가 없어졌습니다. 즉, edit 메소드는 오로지 데이터를 가져와서 뷰에 보여주는 코드만 있으므로 더 가독성이 좋아집니다.