Spring @Controller和@RestController的区别?

@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容

2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

package com.itheima.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping
public class ViewAllBeans {

    @Autowired
    private ApplicationContext applicationContext;

    @GetMapping("/beanList")
    public List<String> beanList() {
        return Arrays.asList(applicationContext.getBeanDefinitionNames());
    }
}

结果如下:

0    "org.springframework.context.annotation.internalConfigurationAnnotationProcessor"
1    "org.springframework.context.annotation.internalAutowiredAnnotationProcessor"
2    "org.springframework.context.annotation.internalCommonAnnotationProcessor"
3    "org.springframework.context.event.internalEventListenerProcessor"
4    "org.springframework.context.event.internalEventListenerFactory"
5    "springMvcConfig"
6    "bookController"

REF

https://www.cnblogs.com/clwydjgs/p/9255046.html

https://blog.csdn.net/gg12365gg/article/details/51345601

原文地址:https://www.cnblogs.com/emanlee/p/15759061.html