• 0909.804.713 / 0896.446.753
  • cskh@laptrinhjavaweb.com

@Controller và @RestController trong Spring framework, Spring MVC, Spring Boot

Khi các bạn làm việc với spring framework, spring mvc, spring boot ...

Các bạn thường xuyên làm việc với các annotation như @Controller, @RestController. Vậy chúng được dùng như thế nào, các bạn cùng xem bài viết sau của laptrinhjavaweb nhé

7 ngày học java master miễn phí: Học java core, java web, java hosting

Những nội dung nên xem trước để theo dõi nội dung hôm nay hiệu quả

1. Tạo project spring mvc sử dụng spring boot 2.0.x, intellij: CHI TIẾT

2. Tạo project web service sử dụng spring boot 1.5.x, eclipse: CHI TIẾT

Giới thiệu chung về @Controller và @RestController trong Spring framework

Spring framework có 2 loại project các bạn thường dùng

1. Project web, cụ thể là Spring MVC

2. Project web service

@Controller được dùng trong cả 2 project, còn @RestController chỉ dùng trong project web service mà thôi

Vậy cách dùng của 2 annotation đó trong 2 project như thế nào, các bạn cùng xem nhé

Cách sử dụng @Controller và @RestController trong Spring framework

1.Trong project web Spring MVC

1.1 Các bạn xem đoạn code mẫu sau

@Controller
public class HomeController {

  
@RequestMapping(value = "/trang-chu", method = RequestMethod.GET)
  
public ModelAndView homePage() {
     
ModelAndView mav = new ModelAndView("home");
     
return mav;
   }
}

1.2 Ví dụ như đoạn code trên, sau khi kết quả trả ra chúng ta sẽ có như sau

- Trả ra view nào, cụ thể trong đoạn code ví dụ view trả ra là trang home

- Trả ra model nào, tức là data sẽ trả ra view

1.3 Data này không bắt buộc phải có tùy theo yêu cầu của bài toán như thế nào, trong ví dụ không có code mẫu, nếu có data trả ra thì bạn follow đoạn code sau

ModelAndView mav = new ModelAndView("home");
mav.addObject("products", new ArrayList<>());
return mav;

2.Trong project web service

2.1 Bạn xem 2 đoạn code mẫu phía dưới

@Controller

public class PostAPI {

       @RequestMapping(value = "/api/post", method = RequestMethod.POST)

       @ResponseBody

       public PostDTO createPost(@RequestBody PostDTO newPost) {

              return newPost;

       }

}

@RestController

public class PostAPI {

       @RequestMapping(value = "/api/post", method = RequestMethod.POST)

       public PostDTO createPost(@RequestBody PostDTO newPost) {

              return newPost;

   }

}

2.2 Cả 2 cách thức này đều hỗ trợ Spring Framework return http response theo định dạng JSON or XML

Nếu để ý kỹ các bạn sẽ thấy khi sử dụng @RestController các bạn không cần sử dụng @ResponseBody

Tại sao lại như vậy, đơn giản chỉ là sự phát triển phiên bản của Spring Framework mà thôi

@Controller ra đời trước, @RestController ra đời sau nên nhà phát triển họ chủ động bỏ đi để code gọn hơn

Vậy tổng kết lại 1 chút về sự khác nhau giữa @Controller và @RestController trong Spring Framework nhé

@Controller dùng trong cả 2 project, còn @RestController chỉ dùng trong project web service thôi

Trong project web service khi dùng @Controller thì cần sử dụng thêm @ResponseBody để return http response như JSON hoặc XML, còn @RestController thì không cần vì đã tích hợp sẵn trong annotation

Follow Fanpage, Facebook cá nhân, Group Facebook, kênh Youtube để nhận các nội dung hay ho về lập trình Java core, Java web, Java hosting

- Fanpage facebook: XEM TẠI ĐÂY

- Kênh Youtube: XEM TẠI ĐÂY

- Facebook cá nhân cô giáo Trương Tùng Lâm: XEM TẠI ĐÂY

- Nhóm Facebook hỏi đáp miễn phí: XEM TẠI ĐÂY

7 ngày học java master miễn phí: Học java core, java web, java hosting

 

Nhận Ebook phỏng vấn lập trình
Java và Spring Framework

Hy vọng tài liệu phỏng vấn này sẽ giúp cho anh/chị/em tốt hơn trong quá trình phỏng vấn

Đăng ký nhận ebook ngay
phone zalo zalo