@ControllerAdvice注解的使用

@ControllerAdvice增强Controller,里面可以使用三个注解
@ExceptionHandler
@InitBinder
@ModelAttribute
对@RequestMapping注解标记的方法做增强
@RestControllerAdvice 等价于 @ControllerAdvice+@ResponseBody
查看@RestControllerAdvice源码可知,定义上就有@ControllerAdvice和@ResponseBody注解。
@Controller和@RestController亦如此
@Configuration注解其实也标注了@Component元注解,可被Spring容器纳入管理
@RestControllerAdvice功能和@ControllerAdvice功能差不多,只是前者返回的时候要求是JSON格式。

@ControllerAdvice配合 ResponseBodyAdvice接口返回统一格式的数据。

package org.lhzhian.base.exception;    

import org.springframework.web.bind.annotation.ControllerAdvice;    
import org.springframework.web.bind.annotation.ExceptionHandler;     
import org.springframework.web.servlet.ModelAndView;    

/**  
 * 异常统一处理  
 * @author lhzhian 
 * @date 2016年4月28日  
 */    
@ControllerAdvice    
public class GlobalExceptionHandler {    

    private final static String ERROR_PAGE = "error";    

    @ExceptionHandler(Exception.class)    
    public ModelAndView handle(Exception e){     
        ModelAndView mv = new ModelAndView();    
        mv.addObject("message", e.getMessage());    
        mv.setViewName(ERROR_PAGE);    
        return mv;    
    }    

    @ModelAttribute
    //应用到所有@RequestMapping注解方法
    //此处将键值对添加到全局,注解了@RequestMapping的方法都可以获得此键值对
    public void addUser(Model model) { 
        model.addAttribute("msg", "此处将键值对添加到全局,注解了@RequestMapping的方法都可以获得此键值对");
    }  

    @InitBinder  
    //应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
    //用来设置WebDataBinder,用于自动绑定前台请求参数到Model中。
    public void initBinder(WebDataBinder binder) {  
    } 

} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值