Spring编程:@ResponseBody 注解
Posted 志波同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring编程:@ResponseBody 注解相关的知识,希望对你有一定的参考价值。
1.定义
@ResponseBody 注解是一个标识型注解,无需设置任何参数值。该注解的作用是:将 Controller 方法返回的对象,转换为 JSON 格式,通过 response 对象返回给客户端。
2.源代码
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;
/**
* Annotation that indicates a method return value should be bound to the web
* response body. Supported for annotated handler methods in Servlet environments.
*
* <p>As of version 4.0 this annotation can also be added on the type level in
* which case it is inherited and does not need to be added on the method level.
*
* @author Arjen Poutsma
* @since 3.0
* @see RequestBody
* @see RestController
*/
@Target(ElementType.TYPE, ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResponseBody
该注解指示方法的返回值应该被绑定到 web 响应体中。仅在 servlet 环境中可注解的方法上使用。从 4.0 开始,该注解可以被添加的类级别上,该类中的方法会继承类上的注解,无需单独的为类中方法添加注解。
3.代码示例
产品 Controller 类
package org.learn.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/product")
public class ProductController
@ResponseBody
@RequestMapping("/detail")
public ProductDO getUser()
ProductDO productDO = new ProductDO();
productDO.setName("华为手机Mate20");
productDO.setDescription("华为手机");
return productDO;
产品类:
package org.learn.controller;
import java.io.Serializable;
/**
* 产品类
*
* @author zhibo
* @date 2019-07-25 10:39
*/
public class ProductDO implements Serializable
private static final long serialVersionUID = 6550342067524547999L;
private String name;
private String description;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getDescription()
return description;
public void setDescription(String description)
this.description = description;
运行代码,执行结果如下图所示:
4.@RestController注解
@RestController 注解作用于类上,等于 @Controller 与 @ResponseBody 同时作用于类。
@RestController
@RequestMapping("/product")
public class ProductController
@RequestMapping("/detail")
public ProductDO getUser()
ProductDO productDO = new ProductDO();
productDO.setName("华为手机Mate20");
productDO.setDescription("华为手机");
return productDO;
等同于
@Controller
@ResponseBody
@RequestMapping("/product")
public class ProductController
@RequestMapping("/detail")
public ProductDO getUser()
ProductDO productDO = new ProductDO();
productDO.setName("华为手机Mate20");
productDO.setDescription("华为手机");
return productDO;
本文内容适合于初学 springmvc 的同学。文章内容仅代表个人观点,如有不正之处,欢迎批评指正,谢谢大家。
以上是关于Spring编程:@ResponseBody 注解的主要内容,如果未能解决你的问题,请参考以下文章
转-Spring 注解学习手札 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring MVC @ResponseBody注解返回值中文乱码问题