@ControllerAdvice注解

@ControllerAdvice注解在Spring中用于给Controller添加全局操作,如异常处理、参数绑定和模型属性初始化。它结合@ExceptionHandler、@InitBinder和@ModelAttribute等注解,实现不同目的的业务逻辑织入。例如,@ExceptionHandler用于捕获并处理特定类型的异常,@InitBinder用于注册自定义参数解析方式,@ModelAttribute则在方法执行前进行数据准备。@RestControllerAdvice与@ControllerAdvice类似,但适用于RESTful API,避免手动添加@ResponseBody。
摘要由CSDN通过智能技术生成

@ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。

对于@ControllerAdvice,我们比较熟知的用法是结合@ExceptionHandler用于全局异常的处理,但其作用不止于此。ControllerAdvice拆开来就是Controller Advice,关于Advice,在Spring的AOP中,是用来封装一个切面所有属性的,包括切入点和需要织入的切面逻辑。这里ControllerAdvice也可以这么理解,其抽象级别应该是用于对Controller进行切面环绕的,而具体的业务织入方式则是通过结合其他的注解来实现的。@ControllerAdvice是在类上声明的注解,其用法主要有三点:

1.结合方法型注解@ExceptionHandler,用于捕获Controller中抛出的指定类型的异常,从而达到不同类型的异常区别处理的目的。

2.结合方法型注解@InitBinder,用于request中自定义参数解析方式进行注册,从而达到自定义指定格式参数的目的。

3.结合方法型注解@ModelAttribute,表示其注解的方法将会在目标Controller方法执行之前执行。

从上面的讲解可以看出,@ControllerAdvice的用法基本是将其声明在某个bean上,然后在该bean的方法上使用其他的注解来指定不同的织入逻辑。不过这里@ControllerAdvice并不是使用AOP的方式来织入业务逻辑的,而是Spring内置对其各个逻辑的织入方式进行了内置支持。

@ControllerAdvice
public class SpringControllerAdvice {
/**
* 应用到所有被@RequestMapping注解的方法,在其执行之前初始化数据绑定器
* @param binder
*/
@InitBinder
public void initBinder(WebDataBinder binder) {}

/**
 * 把值绑定到Model中,使全局@RequestMapping可以获取到该值
 * @param model
 */
@ModelAttribute
public void addAttributes(Model model) {
    model.addAttribute("words", "hello world");
}

/**
 * 全局异常捕捉处理
 * @param ex
 * @
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值