【问题标题】:Does it make sense to have an annotated Abstract Controller class - Spring MVC有一个带注释的抽象控制器类是否有意义 - Spring MVC
【发布时间】:2012-11-09 17:49:09
【问题描述】:

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

...
}

【问题讨论】:

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


    【解决方案1】:

    没有必要使用@Controller 注释来注释您的AbstractExternalController 类,尽管将它留在那里不会破坏任何东西。不管你有没有@Controller注解,你当然可以有方法注解,而且它们会起作用。您扩展它的ExternalControllerXXX 将被添加到应用程序上下文中(因为它使用streotype 注释进行注释),并且@ExceptionHandler@ResponseStatus 注释将被兑现。

    【讨论】:

    • 感谢 Nicholas 的快速响应。关于不使用 @Controller 注释抽象类,您是绝对正确的,但不会受到伤害,因为它有助于看到该类是用于 Controller 类的。
    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2021-02-09
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多