2012-09-07 16 views
7

अनुप्रयोगों के विकास में यह मेरा पहला अनुभव एक जावा ईई वास्तुकला पर आधारित है और मैंस्प्रिंग 3.1 एप्लिकेशन में जेएसएफ प्रबंधित बीन घोषित कैसे करें?

  • JSF 2.0
  • स्प्रिंग उपयोग कर रहा हूँ 3.1
  • जेपीए 2,0

मैं तुम्हारे बारे में खुश पूछना चाहता हूँ एक मुद्दा जो मैं थोड़ा उलझन में हूँ। मैं अपने जेएसएफ प्रबंधित बीन घोषित करना चाहता हूं लेकिन इस बाधा से निपटने के लिए कई समाधान हैं:

  1. चेहरे-config.xml में मैंगड बीन घोषित करें।
  2. @ManagedBean एनोटेशन के साथ मेरे नियंत्रक को ओवरराइड करें।
  3. @ नियंत्रक एनोटेशन के साथ मेरे नियंत्रक को ओवरराइड करें।

मेरा प्रश्न है: इन तीन समाधानों के बीच अंतर क्या है? और मैं अपने आवेदन Config.java या/और web.xml पर क्या परिवर्तन करना चाहिए? और वसंत के विषय में, क्या मुझे अपने वेब.एक्सएमएल में कुछ प्रकार के श्रोताओं को रखना चाहिए?

मैंने वास्तव में कई ट्यूटोरियल और उदाहरण पढ़ने की कोशिश की लेकिन हर बार जब मैं खुद को अवरुद्ध करता हूं!

उत्तर

23

वसंत और जेएसएफ को एकीकृत करते समय आप वास्तव में किसी भी तकनीक में शुरुआत नहीं कर सकते हैं, क्योंकि वे एक साथ अच्छी तरह से खेल नहीं सकते हैं। आपके लिए मेरी पहली और सबसे अच्छी सलाह जेएसएफ और वसंत पर कुछ किताबें प्राप्त करना है और उन्हें एकीकृत करने का प्रयास करने से पहले दोनों अलग-अलग समझते हैं।

ऐसा कहा जा रहा है कि, जेएसएफ एक घटक आधारित वेब ढांचा है जिसमें एमवीसी पर जोर दिया गया है। वसंत एक निर्भरता इंजेक्शन और नियंत्रण ढांचे का उलटा है जो वेब अनुप्रयोगों के लिए विशिष्ट नहीं है।

आप समझ में नहीं आता है, तो इन तीन शब्द हैं:

  • घटक आधारित वेब रूपरेखा

  • निर्भरता इंजेक्शन

  • नियंत्रण के उलट

तब मेरे सुझाव यह है कि आप बस जो भी कर रहे हैं उसे रोकें आईएनजी और तुरंत पढ़ना शुरू करें।

इन दो चीजों को एकीकृत करने में मुख्य समस्या यह है कि दो ढांचे के बीच जिम्मेदारियों में कुछ ओवरलैप है जिन्हें संबोधित करने की आवश्यकता है। एक स्टैंडअलोन फ्रेमवर्क के रूप में जेएसएफ एक अलग डी ढांचे की आवश्यकता के बिना अपने स्वयं के प्रबंधित बीन्स के दायरे को बनाए रखता है। वसंत शुरू करते समय हालांकि स्वाभाविक रूप से संघर्ष होने जा रहे हैं। स्प्रिंग जेएसएफ के अलावा अपने स्वयं के बीन्स का प्रबंधन करता है, इसलिए इन प्रबंधित बीन्स का संदर्भ देने के लिए और व्यावसायिक वस्तुओं या डीएओ को उनके उपयोग के लिए ठीक से इंजेक्शन दिया जाता है, जेएसएफ प्रबंधित बीन्स को स्प्रिंग कंट्रोलर बनने की आवश्यकता होती है।

आप @Controller एनोटेशन के साथ एक जेएसएफ प्रबंधित बीन घोषित कर सकते हैं। स्प्रिंग 3 यह समझने के लिए पर्याप्त स्मार्ट है कि यह एक जेएसएफ प्रबंधित बीन है और बीन नाम जो भी प्रबंधित किया गया है, जिसे प्रबंधित किया गया है।

@Controller 
@Scope("session") 
@ManagedBean(name="testBean") 

अब यह संभाला जाता है, अगली समस्या यह है कि आपके जेएसएफ कार्यान्वयन के साथ आने वाली परेशानी ईएल रेजोलवर है। ईएल रिजॉल्वर मूल रूप से बस करता है, यह आपके एक्सएचटीएमएल/जेएसएफ पेज पर सामना किए गए ईएल अभिव्यक्तियों को हल करता है। testBean का संदर्भ देते समय हालांकि यह इस नाम को सही ढंग से हल नहीं कर पाएगा क्योंकि यह उस नाम से जेएसएफ प्रबंधित बीन का जिक्र कर रहा है, और आपको स्प्रिंग कंट्रोलर को सभी वसंत इंजेक्शन निर्भरताओं के साथ नहीं मिल पाएगा।

वसंत 3 आपके जेएसएफ कार्यान्वयन के साथ बंडल किए जाने वाले स्थान के स्थान पर उपयोग करने के लिए एक कस्टम ईएल रिजॉल्वर प्रदान करके इस समस्या को हल करता है। आप इसे प्रयोग की जाने वाली घोषणा कर सकते हैं में faces-config.xml

<application> 
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver> 
</application> 

अब अंत में:

मैं अपने web.xml में श्रोताओं के कुछ प्रकार रखना चाहिए?!

आप किसी भी अन्य स्प्रिंग नियंत्रित सर्वलेट की आवश्यकता के बिना या वसंत सुरक्षा एकीकरण के लिए की जरूरत तो कोई आप अपने web.xml में कुछ भी अतिरिक्त की जरूरत नहीं है बिना JSF + वसंत को एकीकृत कर रहे हैं। आपको केवल FacesServlet और इसके संदर्भ पैराम घोषित करने की आवश्यकता होगी, साथ ही आपकी स्थिति के लिए आवश्यक किसी भी अन्य तृतीय पक्ष घटक लाइब्रेरी सर्वलेट की आवश्यकता होगी।

+2

ग्रेट स्पष्टीकरण। धन्यवाद! – Kris

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