12

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

抽象控制器类:

    @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  {

...
}
4

1 回答 1

10

没有必要用注解来注释你的AbstractExternalController@Controller,但是,把它留在那里不会破坏任何东西。不管你有没有@Controller注解,你当然可以有方法注解,它们都可以工作。您ExternalControllerXXX对它的扩展将被添加到应用程序上下文中(因为它使用 streotype 注释进行了注释),并且@ExceptionHandlerand@ResponseStatus注释将被尊重。

于 2012-11-09T18:30:52.187 回答