论在SpringBoot中@Controller和@RestController的区别

@Controller官方 文档:表示带注释的类是“控制器”(例如Web控制器)。

@RestController官方文档:@RestController is a stereotype annotation that combines @ResponseBody and @Controller.

翻译过来就是@RestController是由 @ResponseBody 和@Controller注结合而成。

笔者在学习过程中通过save方法添加成员的时候,发现虽然添加成功但是Postman返回404,通过请教大佬才知道,用@RestController可以返回json数据,用@Controller不能返回json数据

是在类上加,不是在方法上加,因为@Controller是类的控制器。

代码:

package com.kude.stu.kudestu.stu.controller;

import com.kude.stu.kudestu.stu.entity.User;
import com.kude.stu.kudestu.stu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.condition.RequestMethodsRequestCondition;

import java.util.List;


/**
 * 处理用户信息的控制层
 *
 * @author liyage
 */
//@ResponseBody
//@Controller
//@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    private  User user;

    /**
     * 查询用户的方法
     */

    @ResponseBody
    @RequestMapping("/findAll")
    public List<User> findAll() {

        return userService.findAll();

    }

    @ResponseBody
    @RequestMapping("/findById")
    public User findUserById(int id){
        return userService.findUserById(id);
    }

    /**
     * 注册用户
     *
     */
    @RequestMapping(value="/reg",method = RequestMethod.POST)
    public User reg(User user){
        return userService.save(user);
    }

    /**
     * 删除用户
     */
    @ResponseBody
    @RequestMapping(value="/del",method = RequestMethod.POST)
    public void  del(int id){
        userService.deleteById(id);
        System.out.println("删除成功");
    }
}

结果:

                原数据库数据:

                论在SpringBoot中@Controller和@RestController的区别

                 postman执行结果:

                论在SpringBoot中@Controller和@RestController的区别

                运行后数据库:

                论在SpringBoot中@Controller和@RestController的区别

添加@RestController注解后:

               运行结果:
               论在SpringBoot中@Controller和@RestController的区别

             数据库:

             论在SpringBoot中@Controller和@RestController的区别

参考资料:https://blog.csdn.net/gg12365gg/article/details/51345601