Git Product home page Git Product logo

controller-advice's Introduction

Build Status

controller-advice

Exploring basic features of exception handling in Spring (@ControllerAdvice).

Reference: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html
Reference: https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
Reference: http://www.baeldung.com/exception-handling-for-rest-with-spring

preface

Before Spring 3.2, the main approach to handling exceptions in a Spring MVC application was @ExceptionHandler annotation.

After 3.2 we now have the new @ControllerAdvice annotation to address the limitations of the previous one.

  • @ExceptionHandler
    public class FooController{
         
        //...
        @ExceptionHandler({ CustomException1.class, CustomException2.class })
        public void handleException() {
            //
        }
    }
    
    drawback: is active only for that particular Controller.

definition

A controller advice allows you to use similar exception handling techniques to @ExceptionHandler but apply them across the whole application, not just to an individual controller. You can think of them as an annotation driven interceptor.

manual

Any class annotated with @ControllerAdvice becomes a controller-advice, then we have to write method that will handle specific exception:

@ResponseStatus(code = HttpStatus.NOT_FOUND)
@ExceptionHandler(EntityNotFoundException.class)
@ResponseBody
ApplicationExceptionAsJSON entityNotFoundException(@NonNull HttpServletRequest request, 
                                                          @NonNull EntityNotFoundException ex) {
    Preconditions.checkArgument(nonNull(request.getRequestURI()));
    Preconditions.checkArgument(nonNull(ex.getLocalizedMessage()));
    
    return ApplicationExceptionAsJSON.builder()
            .url(request.getRequestURI())
            .message(ex.getLocalizedMessage())
            .build();
}

project description

  • EntityNotFoundExceptionInterceptor is @ControllerAdvice

controller-advice's People

Contributors

mtumilowicz avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.