2012-11-09 22 views
10

क्या यह एक एनोटेटेड (@ कंट्रोलर) स्प्रिंग एमवीसी संचालित कंटेनर में सार वर्ग होने का अर्थ है, मूल रूप से अधिकांश पुन: प्रयोज्य विधियों को रखना चाहते हैं सार कक्षा में अपवाद हैंडलर और बेस क्लास के साथ विस्तारित करें, ताकि उसी बॉयलरप्लेट कोड को दोहराना न पड़े। उदाहरण के लिए।क्या यह एक एनोटेटेड सार नियंत्रक वर्ग है - स्प्रिंग एमवीसी

सार नियंत्रक वर्ग:

@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 इसे विस्तारित करने के लिए एप्लिकेशन संदर्भ में जोड़ा जाएगा (क्योंकि यह एक स्ट्रीोटाइप एनोटेशन के साथ एनोटेटेड है), और @ExceptionHandler और @ResponseStatus एनोटेशन को सम्मानित किया जाएगा।

+1

त्वरित प्रतिक्रिया निकोलस के लिए धन्यवाद। आप कंट्रोलर के साथ अमूर्त वर्ग को एनोटेट करने के संबंध में बिल्कुल सही हैं, लेकिन यह चोट नहीं पहुंचाता क्योंकि यह देखने में मदद करता है कि कक्षा नियंत्रक वर्गों के लिए है। – MasterV