@ControllerAdvice 的介绍及三种用法
浅析@ControllerAdvice
首先,
ControllerAdvice
本质上是一个Component
,因此也会被当成组建扫描,一视同仁,扫扫扫。然后,我们来看一下此类的注释:
这个类是为那些声明了(@ExceptionHandler、@InitBinder 或 @ModelAttribute注解修饰的)方法的类而提供的专业化的@Component , 以供多个 Controller类所共享。
说白了,就是aop思想的一种实现,你告诉我需要拦截规则,我帮你把他们拦下来,具体你想做更细致的拦截筛选和拦截之后的处理,你自己通过@ExceptionHandler、@InitBinder 或 @ModelAttribute这三个注解以及被其注解的方法来自定义
初定义拦截规则:
ControllerAdvice 提供了多种指定Advice规则的定义方式,默认什么都不写,则是Advice所有Controller,当然你也可以通过下列的方式指定规则
比如对于 String[] value() default {} , 写成@ControllerAdvice("org.my.pkg") 或者 @ControllerAdvice(basePackages="org.my.pkg"), 则匹配org.my.pkg包及其子包下的所有Controller,当然也可以用数组的形式指定,如:@ControllerAdvice(basePackages={"org.my.pkg", "org.my.other.pkg"}), 也可以通过指定注解来匹配,比如我自定了一个 @CustomAnnotation 注解,我想匹配所有被这个注解修饰的 Controller, 可以这么写:@ControllerAdvice(annotations={CustomAnnotation.class})还有很多用法,这里就不全部罗列了。
详细例子 内容见:https://blog.csdn.net/qq_36829919/article/details/101210250
![](https://images.cnblogs.com/cnblogs_com/isme-zjh/1665628/t_200309175526zhifubao.png?a=1583807649478)
您的资助是我最大的动力!
金额随意,欢迎来赏!