内容简介:之前,我们介绍过Controller Advice字面上意思是“控制器通知”,Advice除了“劝告”、“意见”之外,还有“通知”的意思。你可以将因为
之前,我们介绍过 @ModelAttribute 和 @ExceptionHandler ,前者可以往请求的Model里加数据,后者可以接受请求处理方法抛出的异常。但是他们放在控制器(Controller)里的时候,作用范围是有限的,只管当前控制器里的方法。如果你有几百个控制器,在每个控制器里都加上类似的代码,不免有点冗余和费劲儿。Spring框架提供了 @ControllerAdvice 注解,帮助你将其应用到所有的控制器上。
Controller Advice字面上意思是“控制器通知”,Advice除了“劝告”、“意见”之外,还有“通知”的意思。你可以将 @ModelAttribute 和 @ExceptionHandler 标记的方法提取出来,放到一个类里,并将加上 @ControllerAdvice ,这样,所有的控制器都可以用了:
因为 @ControllerAdvice 被元注解 @Component 标记,所以它也是可以被组件扫描扫到并放入Spring容器的。
如果你只想对一部分控制器添加通知,比如某个包下的控制器,可以这样写:
如果你不想把包名写死,不如把包里的某个类传进去,这样包名重构了也不怕:
如果你只想对某几个控制器添加通知,可以这样写:
挺简单的是不是?
通知里的 @ModelAttribute 方法会先于控制器里执行。通知里的 @ExceptionHandler 方法优先级会低于控制器里的。仔细想想就能明白,局部的要优先于全局的。
控制器通知还有一个兄弟, @RestControllerAdvice ,如果用了它,错误处理方法的返回值不会表示用的哪个视图,而是会作为HTTP body处理,即相当于错误处理方法加了 @ResponseBody 注解。
以上所述就是小编给大家介绍的《Spring Boot教程(11) – 理解注解@ControllerAdvice》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Spring Boot教程(8) – 理解注解@SpringBootApplication
- 框架基础:深入理解Java注解类型(@Annotation)
- Spring 注解编程之模式注解
- Java注解之编译时注解
- Java注解之运行时注解
- Java中的注解-自定义注解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cracking the Coding Interview
Gayle Laakmann McDowell / CareerCup / 2015-7-1 / USD 39.95
Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hund......一起来看看 《Cracking the Coding Interview》 这本书的介绍吧!