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

Mas*_*erV 11 java spring abstract-class controller spring-mvc

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

    }
Run Code Online (Sandbox Code Playgroud)

基础控制器类

@Controller
class ExternalControllerXXX extends AbstractExternalController  {

...
}
Run Code Online (Sandbox Code Playgroud)

nic*_*ild 10

没有必要AbstractExternalController@Controlleranntation 注释你的类,但是,留下它不会破坏任何东西.无论你是否有@Controller注释,你当然可以使用方法注释,它们将起作用.您的ExternalControllerXXX扩展将添加到应用程序上下文中(因为它使用streotype注释进行注释),并且将遵循@ExceptionHandler@ResponseStatus注释.