zoukankan      html  css  js  c++  java
  • 后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第一章节29(注解,Controller类注解)

      Controller类上的注解有以下四个

    1. @Controller:是@Component的一种,@Controller代表MVC中的C,表示控制层
    2. @RestController: @Responsebody和@Controller的组合注解,相当于给类下的所有handler方法上添加@Responsebody注解,此时视图解析器,过滤器不在适用。
    3. @ControllerAdivce:相当于给所有@Controller标注的类上添加切面。等价于execution(* @Controller *.*(..))表达式,
    4. @RestControllerAdvice:相当于给所有@RestController标注的类上添加切面

    1、@Controller

      @Controller与其他@Component,@Service功能相同,是给IOC容器中注入bean。区别在于@Controller表示Controller类。示例略。

    2、@RestController

      @RestController是@Responsebody和@Controller的组合注解。相当于给类下Handler方法上添加@Responsebody注解,方法返回值为response输出流的内容。

      在使用时需要注意:

    1. 此时不适用视图解析器,视图解析器的作用是将viewname 转换为View对象,此时返回的字符串含义不是viewName,而是输出流的内容
    2. 输出流内容是有大小的,当超出最大值时,response对象会提交。
    3. 当响应类型为输出流时,不会在执行过滤链

    3、@ControllerAdvice

      相当于给@Controller类配置切面,切面的意义就是把所有@Controller类中公共的一些方法与@Controller类中的handler方法解耦。

      @ControllerAdvice类下的方法是Controller的”公共模块”,例如异常处理,initDataBinder,ModelAttribute等。

      @ControllerAdvice可以自定义切面的范围。默认情况下是有@Controller的类。自定义的方式有三种

      1、annotations:根据类上的注解定义切面的范围,例如

    @ControllerAdvice(annotations = Controller.class)
    

      2、value:根据包名,例如

    @ControllerAdvice(basePackages = "controller")
    

      3、assignableTypes:根据类名,例如

    @ControllerAdvice(assignableTypes = {TestController.class,HelloController.class})
    

    4、@RestControllerAdvice

      与@ControllerAdvice基本相同,区别在于@ControllerAdvice是给@Controller注解配置切面,@RestControllerAdivce是给@RestController配置切面

  • 相关阅读:
    Linux如何查找大文件或目录总结
    Linux下动态调整LVM文件系统大小
    ios学习路线图
    js模块,类,继承,命名空间,私有属性等相关概念梳理
    <代码大全2>记录
    2017读书计划
    Spring声明式事务
    Spring-Aop
    Spring静态工厂和扫描器
    Spring-IOC
  • 原文地址:https://www.cnblogs.com/rain144576/p/12902950.html
Copyright © 2011-2022 走看看