더북(TheBook)

컴포넌트 검색으로 ReadingListController를 발견하여 자동으로 스프링 애플리케이션 컨텍스트에 빈으로 등록하려고 클래스에 @Controller 애너테이션을 붙였다. 또 요청을 처리하는 모든 메서드를 기본 URL 경로인 /로 매핑하려고 @RequestMapping 애너테이션을 붙였다.

ReadingListController에는 메서드 두 개를 작성했다.

readersBooks() : 인스턴스 변수에 지정한 독자(reader)의 Book 리스트를 컨트롤러의 생성자로 주입된 리포지토리에서 조회하는 메서드다. /로 들어오는 HTTP GET 요청을 처리한다. “books” 키로 Book 목록을 모델에 추가하고, 모델을 렌더링할 뷰의 논리적 이름으로 “readingList”를 반환한다.

addToReadingList() : 요청 바디에 있는 데이터를 Book 객체에 바인드하여 /로 들어오는 HTTP POST 요청을 처리한다. 이 메서드는 Book 객체의 reader 프로퍼티를 독자의 이름으로 설정한 후 리포지토리의 save() 메서드를 이용하여 Book 객체를 저장한다. 마지막으로 /로 리다이렉트("redirect:/")하도록 지정하면서 반환한다(이 리다이렉트 경로로 들어오는 요청은 다른 컨트롤러 메서드가 처리한다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.