12 votes

Est-il utile d'avoir une classe de contrôleur abstrait annotée - Spring MVC

Est-il utile d'avoir une annotation (@Controller) Classe abstraite dans un conteneur piloté par Spring MVC, on voudrait essentiellement placer la plupart des méthodes réutilisables telles que les gestionnaires d'exception dans la classe abstraite et l'étendre avec la classe de base, afin de ne pas avoir à répéter le même code passe-partout. Par exemple.

Classe de contrôleur abstrait :

    @Controller
    abstract class AbstractExternalController {

    @ExceptionHandler(NoSuchRequestHandlingMethodException.class)
    @ResponseStatus(value = HttpStatus.NOT_FOUND)
    public @ResponseBody ResponseModel handleNotFoundException() {
            final ResponseModel response = new ErrorModel();
            response.setStatus("404");
                response.setMessage("Resource Not Found");
                return response;
             } 
...

    }

Classe de contrôleur de base

@Controller
class ExternalControllerXXX extends AbstractExternalController  {

...
}

10voto

nicholas.hauschild Points 21796

Il est inutile d'annoter votre AbstractExternalController avec la classe @Controller anntation, bien que le laisser là ne casse rien. Indépendamment du fait que vous ayez ou non le @Controller vous pouvez certainement avoir les annotations de méthode, et elles fonctionneront. Votre ExternalControllerXXX l'étendant, il sera ajouté au contexte de l'application (parce qu'il est annoté d'une annotation streotype), et l'élément @ExceptionHandler y @ResponseStatus Les annotations seront honorées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X