@Controller & @RestController

Posted 藿香正气

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Controller & @RestController相关的知识,希望对你有一定的参考价值。

@Controller在Spring中已经使用很久了,@RestController是在Spring 4.0出现的,它是@Controller@ResponseBody两个注解的结合。

@Controller

经典的Spring controller类会使用@Controller注解标注。被@Controller标注的类为@Component类,并且可以被自动扫描发现。
@Controller注解一般会和@RequestMapping注解一起使用。

@Controller
@RequestMapping("books")
public class SimpleBookController {

    @GetMapping("/{id}", produces = "application/json")
    public @ResponseBody Book getBook(@PathVariable int id) {
        return findBookById(id);
    }

    private Book findBookById(int id) {
        // ...
    }
}

@RespondBody注解:将方法返回值自动转换为HttpResponse对象。

@RestController

@RestController简化了controller类的实现,它是@Controller@RespondBody的结合。

@RestController
@RequestMapping("books-rest")
public class SimpleBookRestController {
    
    @GetMapping("/{id}", produces = "application/json")
    public Book getBook(@PathVariable int id) {
        return findBookById(id);
    }

    private Book findBookById(int id) {
        // ...
    }
}

使用了@RestController@RespondBody就不再需要了。


The Spring @Controller and @RestController Annotations

以上是关于@Controller & @RestController的主要内容,如果未能解决你的问题,请参考以下文章

Yii 框架:Controller/Action url & 参数

Rails 方法返回当前的“controller#action”?

后端SpringMVC Controller(接口定义 & 注解开发)

Host Controller transport layer and AMPs

View & Controller 一些方法的执行顺序

阿昌之丑陋代码优化通过策略模式&模版模式来优化Controller执行流程