सीडीआई का उपयोग करें।
JSF 2.3 के अनुसार, @ManagedBeanहै पदावनत । 1417 को भी देखें । इस का अर्थ है कि अब और चयन करने के लिए एक कारण नहीं है कि @ManagedBeanअधिक @Named। यह पहली बार मोअज़रा 2.3.0 बीटा संस्करण m06 में लागू किया गया था।

इतिहास
मुख्य अंतर यह @ManagedBeanहै कि जेएसएफ ढांचे द्वारा प्रबंधित किया जाता है और केवल @ManagedPropertyजेएसएफ प्रबंधित बीन्स के लिए उपलब्ध है। @NamedCDI ढांचे के माध्यम से आवेदन सर्वर (कंटेनर) द्वारा प्रबंधित और के माध्यम से है @Injectकी तरह एक कंटेनर में कामयाब विरूपण साक्ष्य के किसी भी प्रकार के लिए उपलब्ध @WebListener, @WebFilter, @WebServlet, @Path, @Stateless, आदि और यहां तक कि एक JSF @ManagedBean। दूसरी तरफ से, एक या किसी अन्य कंटेनर प्रबंधित कलाकृति के अंदर काम नहीं@ManagedProperty करता है। यह वास्तव में केवल अंदर काम करता है ।@Named@ManagedBean
एक और अंतर यह है कि सीडीआई वास्तव में प्रति-अनुरोध / थ्रेड के आधार पर लक्ष्य दायरे में वर्तमान उदाहरण को दर्शाता हुआ प्रॉक्सीज़ को इंजेक्ट करता है (जैसे कि ईजेबी को कैसे इंजेक्ट किया जाता है)। यह तंत्र व्यापक दायरे के बीन में संकरे दायरे की बीन को इंजेक्ट करने की अनुमति देता है, जो JSF के साथ संभव नहीं है @ManagedProperty। जेएसएफ "इंजेक्ट" करता है यहां भौतिक उदाहरण सीधे एक सेटर का आह्वान करके (यही कारण है कि एक सेटर की आवश्यकता है, जबकि इसके साथ की आवश्यकता नहीं है @Inject)।
जबकि प्रत्यक्ष रूप से नुकसान नहीं है - अन्य तरीके हैं - का दायरा @ManagedBeanबस सीमित है। दूसरे दृष्टिकोण से, यदि आप "बहुत अधिक" को उजागर नहीं करना चाहते हैं, तो आप @Injectअपने प्रबंधित बीन्स को भी रख सकते हैं @ManagedBean। यह protectedबनाम की तरह है public। लेकिन यह वास्तव में गिनती नहीं है।
कम से कम, JSF 2.0 / 2.1 में, CDI द्वारा JSF बैकिंग बीन्स के प्रबंधन का प्रमुख नुकसान यह है कि इसके बराबर कोई CDI नहीं है @ViewScoped। @ConversationScopedकरीब आता है, लेकिन अभी भी मैन्युअल रूप से शुरू करने और रोकने की आवश्यकता है और यह एक बदसूरत संलग्न कर देता है cidपरिणाम यूआरएल के लिए अनुरोध पैरामीटर। MyFaces CODI ने पूरी तरह से पारदर्शी तरीके से JSF की javax.faces.bean.ViewScopedCDI को आसान बनाकर इसे आसान बना दिया है ताकि आप बस ऐसा कर सकें @Named @ViewScoped, हालाँकि यह windowIdURL के परिणाम के लिए एक बदसूरत अनुरोध पैरामीटर को जोड़ता है , वह भी सादे वेनिला पेज-टू-पेज नेविगेशन पर। OmniFaces यह सब एक सच्चे CDI के साथ हल करता है @ViewScopedजो वास्तव में एक मनमाने ढंग से अनुरोध पैरामीटर के बजाय JSF व्यू स्टेट में सेम के दायरे को शामिल करता है।
JSF 2.2 (जो इस प्रश्न / उत्तर के 3 साल बाद जारी किया गया है) @ViewScopedस्वाद में बॉक्स के बाहर एक पूरी तरह से सीडीआई संगत एनोटेशन प्रदान करता है javax.faces.view.ViewScoped। JSF 2.2 भी एक CDI-only के साथ आता है, @FlowScopedजिसमें @ManagedBeanसमतुल्य नहीं है , जिससे JSF उपयोगकर्ताओं को CDI की ओर धकेल दिया जाता है। उम्मीद है कि @ManagedBeanऔर दोस्तों को जावा ईई 8. के अनुसार पदावनत किया जाएगा। यदि आप अभी भी उपयोग कर रहे हैं @ManagedBean, तो इसलिए भविष्य के अपग्रेड पथों के लिए तैयार होने के लिए सीडीआई पर स्विच करने की दृढ़ता से अनुशंसा करते हैं। सीडीआई जावा ईई वेब प्रोफाइल संगत कंटेनरों में आसानी से उपलब्ध है, जैसे कि वाइल्डफली, टॉमईई और ग्लासफिश। टॉमकैट के लिए, आपको इसे अलग से इंस्टॉल करना होगा, ठीक उसी तरह जैसे आपने पहले ही JSF के लिए किया था। यह भी देखें कि टॉमकैट में सीडीआई कैसे स्थापित करें?