ResponseBody

本文主要介绍ResponseBody注解的使用方法,开发者不可将ResponseBody注解和ResponseBody注解混淆。

ResponseBody注解用于使用了Controller注解的类中的方法上,它的作用是让使用了Controller注解的类中的方法像使用了RestController注解的类中的方法一样,直接将返回值作为响应发送给客户端。

示例

Controller章节中介绍了以下示例:

@Controller
public class PageController {

    @GetMapping("/")
    public String forward() {
        return "forward:/index.html";
    }

    @GetMapping("/welcome")
    public String redirect() {
        return "redirect:/index.html";
    }
}

如果我们想在上述示例中的返回值当作响应消息返回,而不是做转发和重定向时,就需要ResponseBody注解了:

@Controller
public class PageController {

    @GetMapping("/")
    public String forward() {
        return "forward:/index.html";
    }

    @ResponseBody
    @GetMapping("/welcome")
    public String redirect() {
        return "redirect:/index.html";
    }
}

如上所示,第一个方法仍然做服务器内部转发,第二个方法会直接输出redirect:/index.html到客户端。

另外,如果使用Controller注解加ResponseBody注解将达到RestController的效果:

@ResponseBody
@Controller
public class PageController {

    @GetMapping("/")
    public String forward() {
        return "forward:/index.html";
    }

    @GetMapping("/welcome")
    public String redirect() {
        return "redirect:/index.html";
    }
}

如上所示,两个方法的返回值都将会作为响应消息输出到客户端。

注意:如果开发者使用了MessageConverter,那么有ResponseBody注解的返回值还会经过MessageConverter转换。


相关阅读推荐:
MessageConverter
Controller
RestController

results matching ""

    No results matching ""