Sri*_*nth 326 java spring spring-mvc
弹簧@Controller和@RestController注释之间的区别.
可以@Controller注解同时用于Web MVC框架和REST的应用程序?
如果是,我们如何区分它是Web MVC还是REST应用程序.
mic*_*cha 451
@Controller 用于将类标记为Spring MVC Controller.@RestController是一个方便的注释,只是添加@Controller和@ResponseBody注释(参见:Javadoc)因此,以下两个控制器定义应该相同
@Controller
@ResponseBody
public class MyController { }
@RestController
public class MyRestController { }
Run Code Online (Sandbox Code Playgroud)
BER*_*ine 51
在下面的代码中,我将向您展示它们之间的区别 @controller
@Controller
public class RestClassName{
@RequestMapping(value={"/uri"})
@ResponseBody
public ObjectResponse functionRestName(){
//...
return instance
}
}
Run Code Online (Sandbox Code Playgroud)
和 @RestController
@RestController
public class RestClassName{
@RequestMapping(value={"/uri"})
public ObjectResponse functionRestName(){
//...
return instance
}
}
Run Code Online (Sandbox Code Playgroud)
在 @ResponseBody默认情况下启用.您无需将其添加到函数签名之上.
Rav*_*dje 19
如果使用@RestController,则无法返回视图(在Spring/springboot中使用Viewresolver),在这种情况下不需要@ResponseBody.
如果使用@controller,则可以在Spring webMVC中返回一个视图.
Bar*_*art 18
@RestController带注释的类是相同的,@Controller但@ResponseBody暗示了处理程序方法.
小智 12
实际上,要小心 - 它们并不完全相同.
如果在应用程序中定义任何拦截器,它们将不会应用于注释为的控制器@RestController,但它们可以使用带@Controller注释的控制器.
即.拦截器的配置:
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TemplateMappingInterceptor()).addPathPatterns("/**", "/admin-functions**").excludePathPatterns("/login**");
}
}
Run Code Online (Sandbox Code Playgroud)
并在Spring控制器的声明中:
@Controller
public class AdminServiceController {...
Run Code Online (Sandbox Code Playgroud)
然而,会工作
@RestController
public class AdminServiceController {...
Run Code Online (Sandbox Code Playgroud)
最终不会让拦截器与它相关联.
小智 9
正如您在Spring文档(Spring RestController文档)中所看到的,Rest Controller注释与Controller注释相同,但假设默认情况下@ResponseBody处于活动状态,因此所有json都被解析为java对象.
@RestController是的组合@Controller和@ResponseBody。
@Controller不使用@ResponseBody注解的类中的请求流:
@RestController 返回一个对象作为响应而不是视图。
小智 5
Spring4+ 中新的 @RestController 注释,它将类标记为控制器,其中每个方法都返回域对象而不是视图。它\xe2\x80\x99s @Controller 和@ResponseBody 的简写结合在一起。
\n| 归档时间: |
|
| 查看次数: |
162983 次 |
| 最近记录: |