Controller和RestController的区别
生活随笔
收集整理的這篇文章主要介紹了
Controller和RestController的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. Controller, RestController的共同點
???? 都是用來表示Spring某個類的是否可以接收HTTP請求
?
2.? Controller, RestController的不同點
???? @Controller: 標(biāo)識一個Spring類是Spring MVC controller處理器
???? @RestController:? @RestController是@Controller和@ResponseBody的結(jié)合體,兩個標(biāo)注合并起來的作用。
?
@Controller類中的方法可以直接通過返回String跳轉(zhuǎn)到j(luò)sp、ftl、html等模版頁面。在方法上加@ResponseBody注解,也可以返回實體對象。
@RestController類中的所有方法只能返回String、Object、Json等實體對象,不能跳轉(zhuǎn)到模版頁面。
?
?
@RestController中的方法如果想跳轉(zhuǎn)頁面,則用ModelAndView進(jìn)行封裝,如下:
@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 ""; }?
總結(jié)
以上是生活随笔為你收集整理的Controller和RestController的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu安装docker-ELK
- 下一篇: 网站开发技巧参考大全转