2012-11-09 8 views
10

Yaylı MVC güdümlü kapsayıcıda Özet sınıf özet açıklamalı (@Controller) mantıklı mıdır, temel olarak yeniden kullanılabilir yöntemlerin çoğunu yerleştirmek ister Özet sınıfında istisna işleyicileri olarak ve temel sınıfla genişleterek, aynı boilerplate kodunu tekrar etmek zorunda kalmamak için. Örneğin.Açıklamalı bir Özet Denetleyici sınıfına sahip olmak anlamlı mıdır? - Bahar MVC

Özet Denetleyici Sınıfı:

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

    } 

Taban Kontrolörü Sınıf

@Controller 
class ExternalControllerXXX extends AbstractExternalController { 

... 
} 

cevap

8

, bırakmak orada kırmayacak rağmen, @Controller anntation ile AbstractExternalController sınıf açıklama için gereksizdir şey. @Controller ek açıklamasına sahip olup olmamanızdan bağımsız olarak, yöntem ek açıklamalarına sahip olabilirsiniz ve işe yarayacaklardır. Bunu genişleten ExternalControllerXXX, uygulama içeriğine eklenecektir (çünkü bir streotype ek açıklama ile açıklamalıdır) ve @ExceptionHandler ve @ResponseStatus ek açıklamaları onurlandırılacaktır.

+1

Hızlı yanıt için teşekkürler Nicholas. Özgün sınıfı @Controller ile not etmediğiniz konusunda kesinlikle haklısınız, ancak sınıfın Kontrolör sınıfları için kullanıldığını görmeye yardımcı olduğu için zarar vermezsiniz. – MasterV