13 Mart 2019 Çarşamba

SpringMVC @ControllerAdvice Anotasyonu - Global Exception Handling, Binding vs İçindir

Giriş
Şu satırı dahil ederiz
import org.springframework.web.bind.annotation.ControllerAdvice;
Açıklaması şöyle.
Specialization of @Component for classes that declare @ExceptionHandler, @InitBinder, or @ModelAttribute methods to be shared across multiple @Controller classes.
Açıklaması şöyle
Any class annotated with @ControllerAdvice becomes a controller-advice that support three types of methods: Model enhancement methods, Binder initialization methods and Exception handling methods
Bu sınıfın daha kolayı @RestControllerAdvice anotasyonu. Açıklaması şöyle
@RestControllerAdvice is just a syntactic sugar for @ControllerAdvice + @ResponseBody ...

Controller exception fırlatırsa, exception'ı içeren bir ResponseEntity döndürebilmeyi sağlar. ResponseEntityExceptionHandler sınıfından kalıtabilir.

Exception Handling
@ExceptionHandler Anotasyonu yazına taşıdım

basePackageClasses Alanı
Örnek
Şöyle yaparız.
@ControllerAdvice(basePackageClasses = RepositoryRestExceptionHandler.class)
public class GenericExceptionHandler {

  @ExceptionHandler
  ResponseEntity handle(Exception e) {
    return new ResponseEntity("Some message", new HttpHeaders(), HttpStatus.BAD_REQUEST);
  }
}

Hiç yorum yok:

Yorum Gönder