2017-08-31 46 views
0

我使用SpringBoot創建服務。現在對於異常處理(使用@COntrollerAdvice),我試圖創建一個庫,而不是在每個服務中創建相同的文件。這是我的異常處理程序使用SpringBoot的ExceptionHandling庫

@ControllerAdvice 
public class CustomExceptionHandler { 
    private static final Logger logger = LoggerFactory.getLogger(CustomExceptionHandler.class); 

    /* 
    * This handles constraint voilation exception. 
    * @param exception 
    */ 
    @ExceptionHandler(ConstraintViolationException.class) 
    @ResponseBody 
    public ResponseEntity<?> handleConstraintVoilationException(ConstraintViolationException exception){ 
     logger.info("Inside SumsExceptionHandler.handleConstraintVoilationException()"); 
     ValidationErrorResponse validationResponse = null; 
     for(ConstraintViolation<?> constraintViolation : exception.getConstraintViolations()) { 
      validationResponse = this.makeValidationResponse(constraintViolation); 
     } 

     return new ResponseEntity<>(validationResponse, HttpStatus.BAD_REQUEST); 
    } 

    /* 
    * This handles MethodArgument Type Mismatch Exception. 
    * @param ex 
    */ 
    @ExceptionHandler(MethodArgumentTypeMismatchException.class) 
    @ResponseBody 
    public ResponseEntity<?> handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException exception){ 
     logger.info("Inside SumsExceptionHandler.handleMethodArgumentTypeMismatchException()"); 

     ValidationErrorResponse validationResponse = new ValidationErrorResponse(); 
     validationResponse.setField(exception.getName()); 
     validationResponse.setCode(exception.getRequiredType().getSimpleName()); 
     validationResponse.setMessage(exception.getValue()+" must have valid input of type "+exception.getRequiredType().getSimpleName()); 

     return new ResponseEntity<>(validationResponse, HttpStatus.BAD_REQUEST); 
    } 

    /* 
    * This handles Missing Servlet Request Parameter Exception. 
    * @param ex 
    */ 
    @ExceptionHandler(MissingServletRequestParameterException.class) 
    @ResponseBody 
    public ResponseEntity<?> handleMissingServletRequestParameterException(MissingServletRequestParameterException exception){ 
     logger.info("Inside SumsExceptionHandler.handleMissingServletRequestParameterException()"); 

     ValidationErrorResponse validationResponse = new ValidationErrorResponse(); 
     validationResponse.setField(exception.getParameterName()); 
     validationResponse.setCode(exception.getParameterType()); 
     validationResponse.setMessage(exception.getMessage()); 

     return new ResponseEntity<>(validationResponse, HttpStatus.BAD_REQUEST); 
    } 

    private ValidationErrorResponse makeValidationResponse(ConstraintViolation<?> constraintViolation) { 
     String fieldStr = constraintViolation.getPropertyPath().toString(); 
     String field = null; 
     if(fieldStr != null) { 
      String[] fieldArr = fieldStr.split("\\."); 
      field = fieldArr[fieldArr.length-1]; 
     } 
     return new ValidationErrorResponse(field, 
       constraintViolation.getMessageTemplate(), 
       constraintViolation.getMessage());  

    } 
} 

一)如何創建一個獨立的圖書館嗎?(這也是springboot項目) B),然後如何在其他項目中使用它?

回答

0

一)我怎樣創建一個獨立的圖書館嗎?(這也是一個springboot項目)

  • 創建以最小的依賴單獨的項目。

b)如何在其他項目中使用它?

  • 構建項目,請使用項目作爲庫在classpath中

將罐子按照documentation

春季啓動可以很容易地創建獨立的,生產-grade 基於Spring的應用程序,您可以「運行」。

相關問題