Controller和RestController的区别
1. Controller, RestController的共同點(diǎn)
???? 都是用來表示Spring某個(gè)類的是否可以接收HTTP請(qǐng)求
?
2.? Controller, RestController的不同點(diǎn)
???? @Controller: 標(biāo)識(shí)一個(gè)Spring類是Spring MVC controller處理器
???? @RestController:? @RestController是@Controller和@ResponseBody的結(jié)合體,兩個(gè)標(biāo)注合并起來的作用。
?
@Controller類中的方法可以直接通過返回String跳轉(zhuǎn)到j(luò)sp、ftl、html等模版頁面。在方法上加@ResponseBody注解,也可以返回實(shí)體對(duì)象。
@RestController類中的所有方法只能返回String、Object、Json等實(shí)體對(duì)象,不能跳轉(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的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu安装docker-ELK
- 下一篇: 网站开发技巧参考大全转