Spring Boot教程(11) – 理解注解@ControllerAdvice
之前,我们介绍过@ModelAttribute
和@ExceptionHandler
,前者可以往请求的Model里加数据,后者可以接受请求处理方法抛出的异常。但是他们放在控制器(Controller)里的时候,作用范围是有限的,只管当前控制器里的方法。如果你有几百个控制器,在每个控制器里都加上类似的代码,不免有点冗余和费劲儿。Spring框架提供了@ControllerAdvice
注解,帮助你将其应用到所有的控制器上。
Controller Advice字面上意思是“控制器通知”,Advice除了“劝告”、“意见”之外,还有“通知”的意思。你可以将@ModelAttribute
和@ExceptionHandler
标记的方法提取出来,放到一个类里,并将加上@ControllerAdvice
,这样,所有的控制器都可以用了:
因为@ControllerAdvice
被元注解@Component
标记,所以它也是可以被组件扫描扫到并放入Spring容器的。
如果你只想对一部分控制器添加通知,比如某个包下的控制器,可以这样写:
如果你不想把包名写死,不如把包里的某个类传进去,这样包名重构了也不怕:
如果你只想对某几个控制器添加通知,可以这样写:
挺简单的是不是?
通知里的@ModelAttribute
方法会先于控制器里执行。通知里的@ExceptionHandler
方法优先级会低于控制器里的。仔细想想就能明白,局部的要优先于全局的。
控制器通知还有一个兄弟,@RestControllerAdvice
,如果用了它,错误处理方法的返回值不会表示用的哪个视图,而是会作为HTTP body处理,即相当于错误处理方法加了@ResponseBody
注解。
原文链接:fookwood.com/spring-boot…
转载于:https://juejin.im/post/5d2076085188250fcf17bf6d
Spring Boot教程(11) – 理解注解@ControllerAdvice相关推荐
- Spring Boot教程(一)注解配置与EhCache使用
2019独角兽企业重金招聘Python工程师标准>>> 快速入门 首先,下载样例工程chapter3-2-2.本例通过spring-data-jpa实现了对User用户表的一些操作, ...
- Spring Boot教程(十六):Spring Boot集成shiro
Apache Shiro™是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理.借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到 ...
- Spring Boot 实战 —— MyBatis(注解版)使用方法
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...
- 超详细的Spring Boot教程,搞定面试官!
前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...
- Spring Boot教程(二十):Spring Boot使用String Task定时任务
一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...
- 准备写个Spring Boot教程
最近我打算写一系列Spring Boot教程,用来讲解Spring Boot基础知识和一些常见的应用场景.你可能会问,现在讲这个话题的东西这么多,写出来的意义是啥,别人会看么.我的觉得吧,一条街上很多 ...
- Spring Boot 教程(三): Spring Boot 整合Mybatis
教程简介 本项目内容为Spring Boot教程样例.目的是通过学习本系列教程,读者可以从0到1掌握spring boot的知识,并且可以运用到项目中.如您觉得该项目对您有用,欢迎点击收藏和点赞按钮, ...
- Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理
Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理 参考文章: (1)Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理 ( ...
- Spring Boot教程
Spring Boot教程 欢迎使用Spring Boot教程.Spring Boot是Pivotal Team(The Spring Team)的一个全新项目.它是在现有Spring Framewo ...
最新文章
- access导出MySQL表格_如何将Access数据库里的表内容导出到Excel
- Angular应用中配置全局路径映射
- R语言distMeeus函数计算大圆距离实战(Great Circle Distance)
- Gevent简明教程
- Unity 2018.3.1 SyncVar没有同步服务器变量
- Abp vNext 切换MySql数据库
- Sublime Text 设置在标签页中打开文件
- 【Word 】隐藏功能生成特殊线
- 冷启动阶段的多规则策略如何筛选?
- C#将数据库图片显示在pictureBox
- 例14:计算某日是该年的第几天
- Bluetooth L2CAP介绍
- 社群经济:如何利用社群做营销?
- FORM开发实现动态LOV
- 数据可视化常用LED字体
- java运行vbs_如何在Java中执行VBS脚本?
- 【持续更新】MARL 算法汇总
- 第八章 DirectX 3D模型加载和骨骼动画(上)
- 炒币的诱惑、安稳的生活
- 什么是命名路由?命名路由,命名路由意义
热门文章
- 【J2EE设计模式】模型-视图-控制器模式(MVC模式)
- python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...
- kafka数据 落盘_Kafka数据可靠性保证三板斧-ACK/ISR/HW
- apriori算法c++_关联分析——基于Apriori算法实现
- c语言 链表_C语言编程第22讲——单向有序链表的C语言实现
- 操作系统上机作业--根据莱布尼兹级数计算PI(1)(多线程)
- css链接样式_CSS中的样式链接
- stringwriter_Java StringWriter toString()方法与示例
- Python | 使用matplotlib.pyplot创建条形图
- Java——异常(try...catch...finally)