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 注解的主要内容,如果未能解决你的问题,请参考以下文章

@ResponseBody注解

转-Spring 注解学习手札 补遗——@ResponseBody,@RequestBody,@PathVariable

Spring MVC @ResponseBody注解返回值中文乱码问题

Spring注解@ResponseBody,@RequestBody

spring----@ResponseBody注解

ajax请求 spring mvc responsebody 注解的方法 为啥写不了cookie