Spring MVC – Phần 3: Annotation(3) – Annotation @ResponseBody, @RestController trong Spring MVC

Spring MVC – Phần 3: Annotation(3) – Annotation @ResponseBody, @RestController trong Spring MVC

Annotation RequestBody và RestController được sử dụng khi muốn trả về giá trị là text (json, xml, text…) thay vì trả về view. Thường áp dụng khi phát triển các API

1. Annotation @ResponseBody

Annotation @ResponseBody được thêm vào trước các method của các controller để chỉ dẫn rằng method này sẽ trả về text thay vì trả về view.

Ví dụ:

@RequestMapping("/test1")
@ResponseBody
public String test1() {
  return "test1";
}

2. Annotation @RestController

Annotation @RestController tương đương với @Controller + @ResponseBody

Annotation @RestController được dùng trước các class, các method trong class này sẽ trả về text thay vì trả về view.

Ví dụ:

@RestController
public class APIController {

  @RequestMapping("/test2")
  public String test2() {
    return "test1";
  }

}

Trường hợp kiểu dữ liệu trả về không phải là String mà là 1 đối tượng thì nó sẽ parse đối tượng đó ra thành dữ liệu dạng xml hoặc json để trả về

(Xem thêm: Trả về dữ liệu định dạng JSON trong Spring MVCTrả về dữ liệu định dạng XML trong Spring MVC )

3. Demo

Thư viện sử dụng:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>stackjava.com</groupId>
  <artifactId>SpringAnnotation3</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <spring.version>5.0.2.RELEASE</spring.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
  </dependencies>
</project>

Các controller:

package stackjava.com.springmvchello.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

  @RequestMapping("/")
  public String home() {
    return "home";
  }

  @RequestMapping("/test1")
  @ResponseBody
  public String test1() {
    return "test1";
  }

}
package stackjava.com.springmvchello.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class APIController {

  @RequestMapping("/test2")
  public String test2() {
    return "test2";
  }

}

Demo:

Spring MVC - Phần 3: Annotation(3) - Annotation @ResponseBody, @RestController trong Spring MVC

Download code ví dụ trên tại đây

References: https://spring.io/guides/gs/rest-service/

stackjava.com