2017-06-16 69 views
1

如何處理沒有控制器類的Spring Boot 1.5.4中的異常處理?目前,我只有實體&存儲庫類如下。沒有控制器類的springboot異常處理

Task.class:(實體)

@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; 
    } 

} 

Repository.class:

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

POST方法:返回200 OK

http://localhost:8080/tasks

{ 
"name" : "test" 
} 

但是,

{ 
"name" : "" 
} 

返回500,而不是400錯誤。

請讓我知道,如果有任何方式來處理這種沒有控制器類的異常。

回答

1

您可以使用全局@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

+0

我沒有任何控制器類在我的應用程序。那麼,@ControllerAdvice註釋會起作用嗎? – user7700138

+0

它應該工作。 –

+0

查看我的更新... –