輕量容器引擎Docker Docker是什麼 Docker 是一個開源項目,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘項目。它基於 Google 公司推出的 Go 語言實現。項目後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在GitHub ...
@RestController和@Controller註解
RestController的作用相當於Controller加ResponseBody共同作用的結果,但採用RestController請求方式一般會採用Restful風格的形式。
Controller的作用:聲明該類是Controller層的Bean,將該類聲明進入Spring容器中進行管理
ResponseBody的作用:表明該類的所有方法的返回值都直接進行提交而不經過視圖解析器,且返回值的數據自動封裝為json的數據格式
RestController的作用:包含上面兩個的作用,且支持Restful風格的數據提交方式
@RestController
源碼如下。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented@Controller
@ResponseBodypublic @interface RestController {
/** * The value may indicate a suggestion for a logical component name, * to be turned into a Spring bean in case of an autodetected component. * @return the suggested component name, if any * @since 4.0.1 */
String value() default "";
}
@RestController的編寫方式依賴註解組合,@RestController被@Controller和@ResponseBody標註,表示@RestController具有兩者的註解語義,因此在註解處理時@RestController比@Controller多具有一個@ResponseBody語義,這就是@RestController和@Controller的區別,也是@RestController的返回值為何都是經過轉換的json的原因。
@ResponseBody註解的處理過程
既然知道@RestController與@Controller的區別是多了一個@ResponseBody語義,我們不妨瞭解一下@ResponseBody的處理過程。
首先,可以知道,@ResponseBody是一個針對方法返回值進行處理的註解。如果熟悉Spring MVC處理過程的話,可以知道在根據requesturl映射獲取到HandlerMethod之後,根據HandlerMethod調度請求方法的對象是HandlerAdapter,方法調用結束,返回值處理的調度對象也是HandlerAdapter。所以,@ResponseBody註解的處理應該也是在HandlerAdapter中完成。
Restful風格:
get:獲取數據時用的請求方式
post:更新數據時的請求方式
put:增加數據時的請求方式
delete:刪除數據時的請求方式
查考文檔:https://blog.csdn.net/uuqaz/article/details/123919771