2012-11-09 53 views
10

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

摘要控制器类:

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

... 
} 

回答

8

没有必要与@Controller anntation来注释AbstractExternalController类,虽然,离开它不会有突破任何东西。无论你是否有@Controller注释,你当然可以有方法注释,他们将工作。您的ExternalControllerXXX扩展它将被添加到应用程序上下文中(因为它使用了一个streotype注释进行注释),并且@ExceptionHandler@ResponseStatus注释将被授予。

+1

感谢尼古拉斯的快速反应。关于不使用@Controller注释抽象类是绝对正确的,但不会伤害,因为它有助于查看该类是否适用于Controller类。 – MasterV

相关问题