2010-09-29 9 views
7

मैं सोच रहा था कि सीम के साथ प्रोग्रामिंग करते समय समुदाय @BypassInterceptors एनोटेशन के उपयोग पर मुझे क्या सलाह दे सकता है? मैं सीम अनुप्रयोग प्रदर्शन को बढ़ाने पर पढ़ रहा हूं, और असफल होने के बिना प्रत्येक आलेख में उल्लेख किया गया है कि इस एनोटेशन को जोड़ने से प्रदर्शन में वृद्धि हो सकती है। मेरा सवाल है, इसे कहाँ लागू किया जाना चाहिए? क्या ऐसे सामान्य नियम हैं जो कहते हैं, "जब एक घटक लिखते हैं जो XXX करता है तो आप सुरक्षित रूप से @BypassInterceptors लागू कर सकते हैं"? उदाहरण के लिए, क्या मुझे इसे अपनी इकाई कक्षाओं में लागू करना चाहिए? डीएओ के बारे में क्या? मुझे यह जानकर बहुत उत्सुकता होगी कि वहां हर कोई क्या कर रहा है, साथ ही साथ इसे सही तरीके से लागू करते समय आपने किस प्रकार के प्रदर्शन को देखा है।सीएएम: @ बाईपासइंटरसेप्टर्स का प्रभावी उपयोग?

+0

+1, बहुत ही रोचक सवाल। –

उत्तर

9

यदि आप सुनिश्चित हैं कि आपको इंटरसेप्टर कार्यक्षमता की आवश्यकता नहीं है, तो आप इंटरसेप्टर्स को अक्षम करने के लिए @ बायपास इंटरसेप्टर एनोटेशन पर भरोसा कर सकते हैं। (- @Out @In)

  • लेनदेन प्रबंधन
  • Event handling
  • और इसी तरह ...

    क्योंकि द्वि-jection कार्यक्षमता हासिल की है कार्यक्षमता

    • द्वि-jection शामिल प्रतिबिंब (रनटाइम) का उपयोग करके - उदाहरण के लिए, यह question देखें, जहां आप यह जान सकते हैं कि ओवरहेड प्रतिबिंब कितना प्रदर्शन जोड़ सकता है - इसे टाला जा सकता है (@BypassI के अलावा nterceptor) का उपयोग करके

      • Component.getInstance (<COMPONENT_NAME_GOES_HERE>)

      • गेटर के और सेटर के

      आप

      @Name("personManager") 
      public class PersonManager { 
      
          private @In Person person; 
      
      } 
      
      <h:inputText value="#{person.name}"/> 
      

      @In एनोटेशन के आप के बजाय कर सकते हैं है, तो

      @Name("personManager") 
      public class PersonManager { 
      
          private Person person; 
      
          public Person getPerson() {return this.person;} 
          public void setPerson(Person person) {this.person = person;} 
      
      } 
      

      लेकिन यह न भूलें (ध्यान अपनी नवीनतम मूल्य विशेषता)

      <h:inputText value="#{personManager.person.name}"/> 
      
    3

    बस एक आर्थर की पोस्ट करने के लिए ऊपर का पालन करें।

    अंगूठे के नियम के रूप में, उदाहरण के लिए, आप उस विधि पर कुछ गणना कर रहे हैं जो सीम में किसी भी इंटरसेप्टर का उपयोग नहीं करता है, यानी: कुछ मानों की गणना करना, तो उस विधि को चिह्नित करना एक अच्छी बात है @BypassInterceptors

    लेकिन हमेशा इस एनोटेशन को जोड़ने के बाद का परीक्षण करें। मैंने अजीब कीड़े का अनुभव किया है क्योंकि मेरे पास विधियों और कक्षाओं पर यह एनोटेशन था जो शुरुआती परीक्षण में नहीं आया था।

    यह जानना बुद्धिमानी है कि आप यह नहीं जानते कि आप क्या कर रहे हैं या एनोटेशन क्या कर रहा है।

    3

    विषय पर दान एलन (एक्शन में सीम) द्वारा एक अवश्य पढ़ा गया लेख here (part 1) और here (part 2) है। इसमें सीम एप्लिकेशन में @ बाईपास इंटरसेप्टर और कई अन्य प्रदर्शन-संबंधी मुद्दों को शामिल किया गया है, जैसे सशर्त प्रतिपादन।

    संबंधित मुद्दे