首页 > 解决方案 > 托管在云中时,自定义 Spring 启动异常处理程序不起作用

问题描述

我是春季靴子的新手,我有一个场景我无法弄清楚我可能会错过什么。我创建了 Common Error 处理程序类来处理我的所有应用程序错误,并且在使用 Spring Boot 嵌入式 tomcat 或本地 tomcat 时可以正常工作。但是,如果我将相同的 war 文件部署到安装了 tomcat 应用程序的数字海洋云服务器上,则不会调用 @ControllerAdvice。这是我的 Spring Boot 代码,我需要帮助来弄清楚我可能缺少什么或应该做什么。在我的云服务器中使用 open jdk 8 但在本地主机上使用 jdk8

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class AppExceptionHandler extends ResponseEntityExceptionHandler 
{
   
   @ResponseBody
    @ExceptionHandler(ValidationException.class)
    public ResponseEntity<?> InvalidData(ValidationException e){
        common.logException(e);
        return response(common.BAD_REQUEST, "125# "+e.getMessage());
        
    }

   private ResponseEntity<ServerResponse> response(int code, String msg) {

        return new ResponseEntity<>(new ServerResponse(code,msg
              ), HttpStatus.FORBIDDEN);


    }



}

@Getter
@SuppressWarnings("serial")
@ResponseStatus(HttpStatus.FORBIDDEN)
public class ValidationException extends RuntimeException {

    private Object[] params = null;
    private String status_code;

    public ValidationException(String message,String status_code) {
        super(message);
        this.status_code=status_code;
    }

    public ValidationException(String message, Throwable cause) {
        super(message, cause);
    }

    public ValidationException(String message, Object[] params) {
        super(message);
        this.params = params;
    }



}
@Data
public class RegModel{
    @JsonProperty("EmailAddress")
    private String email_address;
    private String application_type;
    private String admission_num;
}

@Data
@AllArgsConstructor
public class ResponseModel{
    private int resp_code;
    private String message;
}

@Service
public class MyService{

  public <T> T createStudent(RegModel userCreationModel)
    {
        T response=null;

        if(userCreationModel.getEmail_address()==null)
        {


            throw new ValidationException(new ResponseModel("Invalid Request",500);
        }
     }

}

这是我使用本地主机的邮递员请求 在此处输入图像描述

这里是部署在云响应相同端点的战争文件 在此处输入图像描述

标签: javaspring-boot

解决方案


推荐阅读