有一个带注释的抽象控制器类 - Spring MVC是否有意义

时间:2012-11-09 17:49:10

标签: java spring spring-mvc controller abstract-class

在Spring MVC驱动的容器中有一个带注释的(@Controller)抽象类是否有意义,基本上想放置大多数可重用的方法,如异常处理程序在Abstract类中并使用基类扩展它,这样就不必重复相同的样板代码。例如。

抽象控制器类:

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

    }

基本控制器类

@Controller
class ExternalControllerXXX extends AbstractExternalController  {

...
}

1 个答案:

答案 0 :(得分:10)

没有必要使用AbstractExternalController anntation注释你的@Controller课程,但是留下它不会破坏任何东西。无论您是否拥有@Controller注释,您当然可以使用方法注释,并且它们将起作用。扩展它的ExternalControllerXXX将被添加到应用程序上下文中(因为它带有一个Streotype注释注释),并且@ExceptionHandler@ResponseStatus注释将被接受。