11. 페이징 처리하기메인 게시판을 접근하게 되면 한번에 너무 많은 게시글들이 쏟아져 나오게 돼 보기가 좋지 않고 서버도 많은 양의 데이터를 한번에 보내야 하기 때문에 성능에서도 좋지 않다.사용자에게 전체 데이터에서 적당한 양의 데이터만 보여줘 사용자 입장에서도 서버 입장에서도 부담이 없게 한다.
Control 로직 수정하기Spring에서 제공하는 Pageable 인터페이스를 사용하면 쉽게 페이징 기능을 사용할 수 있다.
BoardController.java
@Controller@RequiredArgsConstructorpublic class BoardController { private final PostService postService;// @GetMapping("/")// public String board(Model model){// List<Post> posts = postService.getAllPosts();// model.addAttribute("PostList", posts);// return "board";// } @GetMapping("/") public String board(@PageableDefault Pageable pageable, Model model) { Page<Post> posts = postService.getPosts(pageable); model.addAttribute("PostList", posts); return "board"; }}
테스트 코드 로직 변경@Test@DisplayName("모든 Post를 가져온다.")public void board() throws Exception { List<Post> posts = new ArrayList<>(); posts.add(Post.builder() .id(1L) .title("test") .name("tester") .content("test") .writeTime(LocalDateTime.now()) .build() ); Page<Post> pagePosts = new PageImpl<>(posts); PageRequest pageRequest = PageRequest.of(1, 10); given(postService.getPosts(pageRequest)).willReturn(pagePosts); ResultActions resultActions = mockMvc.perform(get("/") .param("page", "1")// .flashAttr("PostList", new ArrayList<>()) ); resultActions .andExpect(status().isOk()) .andDo(print()); verify(postService).getPosts(pageRequest);}
Servic 로직 추가