您好,登錄后才能下訂單哦!
Controller和RestController的區別是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在springboot中,Controller, RestController是使用控制器最常用的兩個注解,但是兩者之家的差異你知道嗎?下面就是要講述兩者之間的區別。
1. Controller, RestController的共同點
都是用來表示Spring某個類的是否可以接收HTTP請求。
2. Controller, RestController的不同點
@Controller:標識一個Spring類是Spring MVC controller處理器,@RestController:@RestController是@Controller和@ResponseBody的結合體,兩個標注合并起來的作用。@Controller類中的方法可以直接通過返回String跳轉到jsp、ftl、html等模版頁面。在方法上加@ResponseBody注解,也可以返回實體對象。@RestController類中的所有方法只能返回String、Object、Json等實體對象,不能跳轉到模版頁面。
@RestController中的方法如果想跳轉頁面,則用ModelAndView進行封裝,如下:
@RestController public class UserController { @RequestMapping(value = "/index",method = RequestMethod.GET) public String toIndex(){ ModelAndView mv = new ModelAndView("index"); return mv; } }
示例如下:
@Controller @ResponseBody public class MyController { } @RestController public class MyRestController { }
@Controller注解源碼:
package org.springframework.stereotype; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Component; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controller { String value() default ""; }
@RestController注解源碼:
package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ResponseBody; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController { String value() default ""; }
關于Controller和RestController的區別是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。