Spring統合例外処理の@ControllerAdviceが使用できない問題
2759 ワード
最近のプロジェクトでは@ControllerAdviceを使用してグローバル構成の例外処理が行われましたが、@ControllerAdvice構成のクラスが機能しません.次は私の異常処理クラスです
コードには何の問題もありません.ネット上にはたくさんあります.しかし、機能しないのはspringが起動していないに違いない.そしてクラスに@EnableWebMvcを追加しました
GlobalExceptionHandlerでOK、@EnableWebMvc is equivalent to in XML.以前私のspringプロファイルXMLには追加されていなかったので、XMLに追加しました.D e f a u l t AnnotationHandlerMappingとAnnotationMethodHandlerAdapterの2つのbeanを登録し、messageconverterを構成することに相当します.@Controller注記の使用前提設定が解決しました.だから私が前に使っていたブロックorg.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMappingも置き換えなければなりません.そうしないと衝突します.ブロッキングは次の構成を使用します.
これで問題が解決した.
/**
*
*/
package com.vkl.hblw.common.exception;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import com.vkl.hblw.common.constant.SystemInfo;
import com.vkl.hblw.common.exception.bean.ServiceException;
import com.vkl.hblw.service.exception.ExceptionService;
/**
* @author xcc
* , 。
*/
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger log = Logger.getLogger(GlobalExceptionHandler.class);
@Resource
private ExceptionService exceptionService;
public ModelAndView model(String errorPage){
ModelAndView mav = new ModelAndView(errorPage);
mav.addObject("title", " ");
mav.addObject("message", "");
return mav;
}
@ExceptionHandler(ServiceException.class)
public ModelAndView serviceExceptionHandle(HttpServletRequest request, Exception ex){
log.error(SystemInfo.LOG_CODE_ERROR, ex);
return model("/error");
}
@ExceptionHandler(Exception.class)
public ModelAndView exceptionHandle(HttpServletRequest request, Exception ex){
log.error(SystemInfo.LOG_CODE_ERROR, ex);
exceptionService.insertYcxx(ex.getMessage(), "");
return model("/error");
}
}
コードには何の問題もありません.ネット上にはたくさんあります.しかし、機能しないのはspringが起動していないに違いない.そしてクラスに@EnableWebMvcを追加しました
GlobalExceptionHandlerでOK、@EnableWebMvc is equivalent to in XML.以前私のspringプロファイルXMLには追加されていなかったので、XMLに追加しました.D e f a u l t AnnotationHandlerMappingとAnnotationMethodHandlerAdapterの2つのbeanを登録し、messageconverterを構成することに相当します.@Controller注記の使用前提設定が解決しました.だから私が前に使っていたブロックorg.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMappingも置き換えなければなりません.そうしないと衝突します.ブロッキングは次の構成を使用します.
これで問題が解決した.