Sự khác biệt giữa mùa xuân @Controller
và @RestController
chú thích.
Có thể @Controller
chú 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.
@Controller
được sử dụng để đánh dấu các lớp là Spring MVC Controller.@RestController
là một chú thích tiện lợi không có gì khác ngoài việc thêm @Controller
và @ResponseBody
chú 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 { }
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
}
}
và @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.
Nếu bạn sử dụng, @RestController
bạn không thể trả lại dạng xem (Bằng cách sử dụng Viewresolver
trong Spring / springboot) và có @ResponseBody
là không cần thiết trong trường hợp này.
Nếu bạn sử dụng, @Controller
bạn có thể trả lại một lượt xem trong Spring web MVC.
@RestController
các lớp được chú thích giống như @Controller
nhưng các @ResponseBody
phương thức trên trình xử lý được ngụ ý.
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 @Controller
bộ đ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.
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.
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.
@Controller
lợi nhuận View
. @RestController
lợi nhuận ResponseBody
.
@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:
@RequestMapping
cùng với @ResponseBody
thích@RequestMapping(value = "/abc", method = RequestMethod.GET, produces ="application/xml")
public @ResponseBody MyBean fetch(){
return new MyBean("hi")
}
<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.
@XmlRootElement(name = "MyBean")
@XmlType(propOrder = {"field2", "field1"})
public class MyBean{
field1
field2 ..
//getter, setter
}
@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.
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.
@Controller
: Chú thích này chỉ là một phiên bản chuyên biệt @Component
và 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 @Controller
sẽ tự động thêm @Controller
và @ResponseBody
chú thích, vì vậy chúng tôi không phải thêm @ResponseBody
vào các phương pháp ánh xạ của mình.@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.
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
@RestController
là sự kết hợp của @Controller
và @ResponseBody
.
Luồng yêu cầu trong một @Controller
lớp mà không sử dụng @ResponseBody
chú thích:
@RestController
trả về một đối tượng dưới dạng phản hồi thay vì dạng xem.
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.
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ì?
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.
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.
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!
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.
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?
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.
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.
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.
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.
Đườ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 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. 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ì!
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
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 +"
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.
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.
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.
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.