spring-boot - 没有 Controller 类的 Spring Boot 异常处理

标签 spring-boot exception

如何在没有 Controller 类的情况下处理 Spring Boot 1.5.4 中的异常处理?目前,我只有实体和存储库类,如下所示。

任务.类:(实体)

@Entity
@Table(name = "task")
public class Task implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Length(min = 1)
    private String name;

    public Task() {

    }

    public Task(String name) {
        this.name = name;
    }

    public Task(Long id, String name) {
        this.name = name;
    }

    public long getId() {
        return id;
    }

    public String getName(){
        return name;
    }

}

存储库.类:

public interface TaskRepository extends PagingAndSortingRepository<Task, Long> {
}

POST方法:返回200 ok

http://localhost:8080/tasks

{
"name" : "test"
}

但是,

{
"name" : ""
}

返回 500 ,而不是 400 错误。

请告诉我,如果有任何方法可以在没有 Controller 类的情况下处理此异常。

最佳答案

您可以使用全局 @ExceptionHandler@ControllerAdvice注解。基本上,您可以使用 @ControllerAdvice 注释在类中定义要使用 @ExceptionHandler 处理的异常,然后在引发该异常时实现您想要执行的操作。

像这样:

@ControllerAdvice(basePackageClasses = RepositoryRestExceptionHandler.class)
public class GlobalExceptionHandler {

    @ExceptionHandler({ValidationException.class, JsonParseException.class})
    public ResponseEntity<Map<String, String>> yourExceptionHandler(Exception e) {
        Map<String, String> response = new HashMap<String, String>();
        response.put("message", "Bad Request");
        return new ResponseEntity<Map<String, String>>(response, HttpStatus.BAD_REQUEST);
    }
}

另请参阅:http://www.ekiras.com/2016/02/how-to-do-exception-handling-in-springboot-rest-application.html

关于spring-boot - 没有 Controller 类的 Spring Boot 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580371/

相关文章:

java - 自动连线注释在自定义推土机转换器内不起作用

java - 无法从 War 文件外部找到 application.properties 文件

java - 定期发送大量邮件

java - Spring Data REST @ExceptionHandler

java - 获取列表的 ArrayIndexOutOfBoundsException

c# - 指定的类型必须是不包含引用的结构

hibernate - MultiTenant Hibernate + Spring boot - 如何防止它在服务器启动期间查找连接

java - Spring websocket 与rabbitmq - 在订阅级别添加安全性

android - Flutter 在尝试 Firebase 身份验证时无法捕获 PlatformException

java - 使用 JFrame 的 JAVA 贷款计算器出现异常?