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配置切面

  • 相关阅读:
    3dsmax script export/import tools
    BOBO输出插件的一些信息
    任务
    说说谷歌在线电子表格
    EditGrid在线编辑Excel文档
    如何控制,textField的宽度,
    在线文档管理平台
    雅虎的这个效果,有机会实现一下
    推荐在线电子表格EditGrid
    我的台账录入界面
  • 原文地址:https://www.cnblogs.com/rain144576/p/12902950.html
Copyright © 2011-2022 走看看