Sự khác biệt giữa chú thích spring @Controller và @RestController

369
Srikanth 2014-08-12 01:34.

Sự khác biệt giữa mùa xuân @Controller@RestControllerchú thích.

Có thể @Controllerchú thích được sử dụng cho cả các ứng dụng Web MVC và REST?
Nếu có, làm thế nào chúng ta có thể phân biệt được đó là ứng dụng Web MVC hay REST.

14 answers

482
micha 2014-08-12 01:41.
  • @Controller được sử dụng để đánh dấu các lớp là Spring MVC Controller.
  • @RestControllerlà một chú thích tiện lợi không có gì khác ngoài việc thêm @Controller@ResponseBodychú thích (xem: Javadoc )

Vì vậy, hai định nghĩa bộ điều khiển sau đây sẽ làm tương tự

@Controller
@ResponseBody
public class MyController { }

@RestController
public class MyRestController { }
64
BERGUIGA Mohamed Amine 2015-12-22 23:54.

Trong đoạn mã dưới đây, tôi sẽ chỉ cho bạn sự khác biệt giữa @controller

@Controller
public class RestClassName{

  @RequestMapping(value={"/uri"})
  @ResponseBody
  public ObjectResponse functionRestName(){
      //...
      return instance
   }
}

@RestController

@RestController
public class RestClassName{

  @RequestMapping(value={"/uri"})
  public ObjectResponse functionRestName(){
      //...
      return instance
   }
}

những @ResponseBodyđược kích hoạt theo mặc định. Bạn không cần thêm nó vào phía trên chữ ký hàm.

27
Ravi Wadje 2017-06-28 01:54.

Nếu bạn sử dụng, @RestControllerbạn không thể trả lại dạng xem (Bằng cách sử dụng Viewresolvertrong Spring / springboot) và có @ResponseBodylà không cần thiết trong trường hợp này.

Nếu bạn sử dụng, @Controllerbạn có thể trả lại một lượt xem trong Spring web MVC.

20
Bart 2014-08-12 01:41.

@RestControllercác lớp được chú thích giống như @Controllernhưng các @ResponseBodyphương thức trên trình xử lý được ngụ ý.

14
bertybro 2015-02-04 18:42.

Trên thực tế, hãy cẩn thận - chúng không hoàn toàn giống nhau.

Nếu bạn xác định bất kỳ bộ chặn nào trong ứng dụng của mình, chúng sẽ không áp dụng cho Bộ điều khiển được chú thích @RestController, tuy nhiên, chúng hoạt động với @Controllerbộ điều khiển được chú thích.

I E. cấu hình cho thiết bị đánh chặn:

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {


    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TemplateMappingInterceptor()).addPathPatterns("/**", "/admin-functions**").excludePathPatterns("/login**");
    }

}

và trong phần khai báo của bộ điều khiển Spring:

@Controller
public class AdminServiceController {...

Sẽ hoạt động, tuy nhiên

@RestController
public class AdminServiceController {...

không kết thúc bằng việc liên kết với bộ đánh chặn.

12
CAAY 2014-08-12 01:41.

Như bạn có thể thấy trong tài liệu Spring ( Spring RestController Documentation ), chú thích của Rest Controller giống như chú thích của Controller, nhưng giả sử nó @ResponseBodyđang hoạt động theo mặc định, vì vậy tất cả các đối tượng Java được tuần tự hóa thành biểu diễn JSON trong phần thân phản hồi.

4
yancy 2017-01-18 22:59.

Chú thích @RestController mới trong Spring4 +, đánh dấu lớp là bộ điều khiển nơi mọi phương thức trả về một đối tượng miền thay vì một khung nhìn. Đó là viết tắt của @Controller và @ResponseBody được cuộn cùng nhau.

4
G.Brown 2019-07-16 22:19.

@Controllerlợi nhuận View. @RestControllerlợi nhuận ResponseBody.

3
hi.nitish 2017-06-17 01:21.

@RestControllerđã được cung cấp kể từ Spring 4.0.1. Các bộ điều khiển này chỉ ra rằng ở đây các phương thức @RequestMapping giả định ngữ nghĩa @ResponseBody theo mặc định.

Trong các phiên bản trước, chức năng tương tự có thể đạt được bằng cách sử dụng bên dưới:

  1. @RequestMappingcùng với @ResponseBodythích@RequestMapping(value = "/abc", method = RequestMethod.GET, produces ="application/xml") public @ResponseBody MyBean fetch(){ return new MyBean("hi") }

  2. <mvc:annotation-driven/> có thể được sử dụng như một trong những cách sử dụng JSON với Jackson hoặc xml.

  3. MyBean có thể được định nghĩa như

@XmlRootElement(name = "MyBean") @XmlType(propOrder = {"field2", "field1"}) public class MyBean{ field1 field2 .. //getter, setter }

  1. @ResponseBody được coi là chế độ xem ở đây giữa các MVC và nó được gửi trực tiếp thay vì được gửi từ Dispatcher Servlet và các bộ chuyển đổi tương ứng chuyển đổi phản hồi ở định dạng liên quan như văn bản / html, ứng dụng / xml, ứng dụng / json.

Tuy nhiên, Restcontroller đã được kết hợp với ResponseBody và các bộ chuyển đổi tương ứng. Thứ hai, ở đây, vì thay vì chuyển đổi cơ quan phản hồi, nó được tự động chuyển đổi thành phản hồi http.

2
Dwij Sheth 2020-02-14 06:16.

Chú thích @RestController đã được giới thiệu trong Spring 4.0 để đơn giản hóa việc tạo các dịch vụ web RESTful. Đó là một chú thích tiện lợi kết hợp @Controller và @ResponseBody - giúp loại bỏ sự cần thiết phải chú thích mọi phương thức xử lý yêu cầu của lớp bộ điều khiển với chú thích @ResponseBody.

0
Prashant Goswami 2018-08-23 23:48.
  • @Controller: Chú thích này chỉ là một phiên bản chuyên biệt @Componentvà nó cho phép các lớp bộ điều khiển được tự động phát hiện dựa trên quá trình quét đường dẫn.
  • @RestController: Chú thích này là một phiên bản chuyên biệt @Controllersẽ tự động thêm @Controller@ResponseBodychú thích, vì vậy chúng tôi không phải thêm @ResponseBodyvào các phương pháp ánh xạ của mình.
0
Tharindu Eranga 2019-12-16 21:57.

@Controller được sử dụng trong các hệ thống kế thừa sử dụng JSP. nó có thể trả về lượt xem. @RestController là để đánh dấu bộ điều khiển đang cung cấp dịch vụ REST với kiểu phản hồi JSON. vì vậy nó kết hợp các chú thích @Controller và @ResponseBody lại với nhau.

0
KiranKumar 2020-09-16 05:17.

Chú thích @Controller chỉ ra rằng lớp là "Bộ điều khiển" giống như bộ điều khiển web trong khi chú thích @RestController chỉ ra rằng lớp là bộ điều khiển trong đó các phương thức @RequestMapping giả định ngữ nghĩa @ResponseBody theo mặc định tức là phục vụ API REST

0
Joby Wilson Mathews 2020-11-24 07:32.

@RestControllerlà sự kết hợp của @Controller@ResponseBody.

Luồng yêu cầu trong một @Controllerlớp mà không sử dụng @ResponseBodychú thích:

@RestController trả về một đối tượng dưới dạng phản hồi thay vì dạng xem.

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Đây là Tổng thống Trump đe dọa 'trợ cấp' xe điện của GM vì đóng cửa nhà máy

Đây là Tổng thống Trump đe dọa 'trợ cấp' xe điện của GM vì đóng cửa nhà máy

Trump và Giám đốc điều hành GM Mary Barra vào năm 2017. Kể từ khi tin tức nổ ra ngày hôm qua rằng General Motors đang cắt giảm việc làm ở Bắc Mỹ để chuẩn bị cho tương lai điện / xe tự hành / khủng khiếp có thể xảy ra của chúng tôi, gần như tất cả mọi người đã tự hỏi: Tổng thống Trump, người đã vận động tranh cử trên một nền tảng sẽ như thế nào của việc mang lại và duy trì việc làm ô tô của Mỹ, phải nói gì về điều này? Bây giờ chúng ta biết.

Bản vá lỗi tiếp theo của Fallout 76 sẽ mang lại một số bản sửa lỗi cần thiết

Bản vá lỗi tiếp theo của Fallout 76 sẽ mang lại một số bản sửa lỗi cần thiết

Bethesda cho biết ngày hôm nay trên Reddit, Fallout 76 sẽ có một bản vá lớn khác vào ngày 4 tháng 12, sẽ bắt đầu cố gắng khắc phục một số vấn đề lớn hơn của trò chơi. Ngoài ra, công ty cho biết họ có kế hoạch giao tiếp nhiều hơn trong tương lai về những gì nhóm Fallout 76 đang làm việc và khi nào các bản cập nhật mới cho trò chơi sẽ ra mắt.

Mạng lưới bệnh viện Công giáo sẽ không cho phép nhân viên phá thai tại phòng khám ngoài giờ làm việc

Mạng lưới bệnh viện Công giáo sẽ không cho phép nhân viên phá thai tại phòng khám ngoài giờ làm việc

Bạn có biết rằng một trong sáu bệnh nhân ở bệnh viện ở Hoa Kỳ được điều trị tại một cơ sở Công giáo? Và bạn có biết rằng quyền sở hữu của Công giáo hạn chế sâu sắc việc thiết lập các thủ tục y tế có thể được thực hiện trong các bệnh viện này, rõ ràng nhất là khi nói đến chăm sóc sức khỏe sinh sản? Bây giờ NPR báo cáo rằng sự gia tăng của các bệnh viện thuộc Công giáo đang gây khó khăn hơn cho các bác sĩ — những người bị cấm bởi các quy định do Hoa Kỳ viết.

Khói từ đám cháy rừng ở California đã đến tận thành phố New York

Khói từ đám cháy rừng ở California đã đến tận thành phố New York

Đường chân trời San Francisco bị che khuất bởi khói và khói mù do cháy rừng phía sau Đảo Alcatraz, Thứ Tư, ngày 14 tháng 11 năm 2018, ở San Francisco.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language