2008-08-12 11 views
26

मैं वर्तमान में स्प्रिंग ढांचे के साथ जावा ईई विकास में शामिल होने की कोशिश कर रहा हूं। जैसा कि मैं वसंत के लिए नया हूं, यह इमेजिंग करना मुश्किल है कि एक अच्छी चल रही परियोजना कैसे शुरू होनी चाहिए।पहली जावा ईई स्प्रिंग प्रोजेक्ट के लिए आपका "सर्वश्रेष्ठ अभ्यास" क्या है?

आप किसी भी सर्वोत्तम प्रथाओं, tipps या प्रमुख DO वंचितों एक स्टार्टर के लिए है? आपने स्प्रिंग - बड़ी परियोजना या छोटे ट्यूटोरियल जैसी एप्लिकेशन के साथ कैसे शुरुआत की? आपने किस तकनीक का तुरंत उपयोग किया था: एओपी, कॉम्प्लेक्स हाइबरनेट ...

+0

क्या यह दोनों एक साथ होना चाहिए? एक समय में एक को संभालना आसान होगा यदि आप दोनों के लिए नए हैं (यह स्पष्ट नहीं है कि जावा ईई आपके लिए नया है)। – SteveD

उत्तर

22

छोटी युक्ति - मुझे अनुप्रयोग चिंता के आधार पर मेरी स्प्रिंग xml संदर्भ फ़ाइलों को मॉड्यूलर और स्पष्ट रूप से लेबल करने में मदद मिली है। यहाँ एक वेब अनुप्रयोग मैं पर काम किया के लिए एक उदाहरण है:

  • MyProject/src/main/resources/spring /
    • datasource.xml - मेरी एकल डेटा स्रोत सेम।
    • persistence.xml - मेरा डीएओ/रिपोजिटरीज। datasource.xml बीन्स पर निर्भर करता है।
    • services.xml - सेवा परत कार्यान्वयन। ये आम तौर पर बीन्स होते हैं जिनके लिए मैं एओपी का उपयोग करके लेनदेन को लागू करता हूं। persistence.xml बीन्स पर निर्भर करता है।
    • नियंत्रक.एक्सएमएल - मेरा वसंत एमवीसी नियंत्रक। services.xml बीन्स पर निर्भर करता है।
    • views.xml - मेरा विचार कार्यान्वयन।

इस सूची में न सही है और न ही संपूर्ण है, लेकिन मुझे आशा है कि यह बिंदु दिखाता है। जो भी नामकरण रणनीति और ग्रैन्युलरिटी आपके लिए सबसे अच्छा काम करती है चुनें।

मेरी (सीमित) अनुभव में, मैंने देखा है इस दृष्टिकोण निम्नलिखित लाभ उपज:

स्पष्ट वास्तुकला

जाहिर नामित संदर्भ फ़ाइलों अपनी परियोजना संरचना एक उचित जगह पर उन लोगों के साथ अपरिचित देता है बीन परिभाषाओं की तलाश शुरू करो। सर्कुलर/अवांछित निर्भरताओं का पता लगाना थोड़ा आसान हो सकता है।

में मदद करता है डोमेन डिजाइन

आप एक सेम परिभाषा जोड़ना चाहते हैं, लेकिन यह आपके संदर्भ फ़ाइलों में से किसी में अच्छी तरह से फिट नहीं करता है, शायद वहाँ एक नई अवधारणा या चिंता उभर रहा है? उदाहरण:

  • मान लीजिए कि आप अपनी सेवा परत को एओपी के साथ लेनदेन करना चाहते हैं। क्या आप उन बीन परिभाषाओं को services.xml पर जोड़ते हैं, या उन्हें अपने transactionPolicy.xml में डालते हैं? अपनी टीम के साथ बात करो। क्या आपकी लेनदेन नीति प्लग करने योग्य होनी चाहिए?
  • अपनी controllers.xml फ़ाइल में एसीजी/स्प्रिंग सुरक्षा बीन्स जोड़ें, या security.xml संदर्भ फ़ाइल बनाएं? क्या आपके पास विभिन्न तैनाती/वातावरण के लिए अलग-अलग सुरक्षा आवश्यकताएं हैं?

समाकलन परीक्षण

आप के लिए एकीकरण परीक्षण अपने आवेदन के एक सबसेट ऊपर तार कर सकते हैं (पूर्व: ऊपर फ़ाइलों को देखते हुए डेटाबेस आप केवल datasource.xml और persistence.xml सेम बनाने की आवश्यकता का परीक्षण करने के लिए)। ध्यान केंद्रित और अच्छी तरह से नामित संदर्भ फ़ाइलों की बहुत-सी यह करने के लिए आसान बनाता है

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" }) 

निर्माण अच्छी तरह से साथ स्प्रिंग आईडीई के बीन्स ग्राफ़

:

विशेष रूप से, आप एक एकीकरण परीक्षण वर्ग जैसे टिप्पणी कर सकते हैं स्प्रिंग आईडीई के Beans Graph का उपयोग करके अपने ऐप की परतों को देखने के लिए कस्टम बीन्स कॉन्फिगसेट बनाएं। मैंने नए टीम के सदस्यों को हमारे आवेदन संगठन के उच्च स्तरीय अवलोकन देने के लिए पहले इसका उपयोग किया है।

2

जब तक मैंने वसंत का उपयोग नहीं किया है, तब तक मैं वर्षों से रहा हूं, और मैं नहीं कह सकता कि मैं इसका प्रशंसक हूं, मुझे पता है कि ऐप फ्यूज टूल (https://java.net/projects/appfuse/) उन सभी कलाकृतियों को उत्पन्न करने के मामले में लोगों को बूटस्ट्रैप की सहायता करने में मददगार रहा है जो आपको जाने के लिए आवश्यक हैं।

14

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

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

शुभकामनाएं!

3

मैं वास्तव में काफी स्प्रिंग पसंद आया .. यह आपके औसत J2EE जावा बीन्स में हवा के एक ताजा हवा ..

कार्यान्वयन के लिए मैं उदाहरण स्प्रिंग प्रदान करता है की सिफारिश था: इसके अलावा

http://static.springframework.org/docs/Spring-MVC-step-by-step/

, मैं पूर्ण मोंटी जाने का फैसला किया और मेरे स्प्रिंग एप्लिकेशन में हाइबरनेट जोड़ा;), क्योंकि स्प्रिंग हाइबरनेट के लिए उत्कृष्ट समर्थन प्रदान करता है ... :)

मेरे पास ऐसा नहीं है, जिसे मैंने कठिन तरीके से सीखा (पीआर में उत्पाद अपहरण) ... यदि आप केवल नियंत्रक इंटरफ़ेस को लागू करते हैं, और इंटरफ़ेस के साथ प्रदान किए गए कुछ डेटा के साथ एक मॉडल एंडव्यू ऑब्जेक्ट वापस लौटाते हैं, तो वसंत उन संसाधनों को कैश करने की कोशिश करने के लिए उन संसाधनों को एकत्रित करता है। तो उन मॉडलों और दृश्य वस्तुओं में बड़े डेटा डालने के लिए सावधान रहें, क्योंकि जब तक कि पृष्ठ को देखा गया है, तब तक सर्वर आपकी हवा मेमोरी को गले लगाएगा ...

+0

हाइपरलिंक में अच्छी किताब – Anirudh

2

प्राप्त करने का एक अच्छा तरीका "स्प्रिंगफ्रेमवर्क" पर ध्यान केंद्रित करना शुरू किया गया है। स्प्रिंग पोर्टफोलियो एंटरप्राइज़ सॉफ्टवेयर के विभिन्न पहलुओं के आसपास परियोजनाओं का एक बड़ा ढेर बन गया है। शुरुआत में कोर पर चिपके रहें और अवधारणाओं को समझने की कोशिश करें। Download नवीनतम बाइनरी और कोर से परिचित होने के बाद स्प्रिंग के पेटक्लिनिक उदाहरण देखें। यह स्प्रिंगसोर्स की पेशकश की विभिन्न परियोजनाओं का काफी अच्छा अवलोकन देता है।

हालांकि दस्तावेज़ की अवधारणाओं को समझने के बाद प्रलेखन बहुत अच्छा है, I'd recommend a book। जो मुझे दस्तावेज़ीकरण के साथ समस्याग्रस्त पाया गया है, वह यह है कि यह गहराई से नहीं है और आपको आवश्यक सभी विवरण नहीं दे सकता है।

1

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

1

यदि आप बस इसमें थोड़ा सा डालना चाहते हैं और देखें कि आपको यह पसंद है, तो मैं स्प्रिंग के जेडीबीसी और/या हाइबरनेट समर्थन का उपयोग करके डीएओ परत से शुरू करने की सलाह देता हूं। यह आपको कई मूल अवधारणाओं के बारे में बताएगा, लेकिन ऐसा कुछ ऐसा करें जो आपके बाकी ऐप से अलग करना आसान हो। यह वह मार्ग है जिसका मैंने पालन किया था, और वसंत के साथ एक पूर्ण आवेदन बनाने में इससे पहले यह अच्छा गर्म था।

3

यहां प्रारंभ करें - मुझे वास्तव में लगता है कि यह सबसे अच्छी सॉफ्टवेयर देव पुस्तकों में से एक है जिसे मैंने पढ़ा है।
Expert Spring MVC And Web Flow

एमवीसी कक्षाओं के लिए नई एनोटेशन-आधारित कॉन्फ़िगरेशन जानें। यह वसंत 2.5 का हिस्सा है। एनोटेशन-आधारित कक्षाओं का उपयोग लेखन इकाई को बहुत आसान की एक बिल्ली का परीक्षण करने जा रहा है। एक्सएमएल की मात्रा में कटौती करने में भी सक्षम होना एक अच्छी बात है।

ओह हाँ यूनिट टेस्ट - यदि आप वसंत का उपयोग कर रहे हैं, तो आप यूनिट परीक्षण बेहतर हो सकते हैं। :) अपने सभी वेब और सेवा परत वर्गों के लिए यूनिट परीक्षण लिखें।

डोमेन संचालित डिजाइन पर पढ़ें। तथ्य यह है कि आप स्प्रिंग एप्लिकेशन के सभी स्तरों पर डोमेन ऑब्जेक्ट क्लास का उपयोग कर सकते हैं, इसका मतलब है कि आपके पास एक बहुत ही शक्तिशाली डोमेन मॉडल होगा। इसका लाभ उठाएं

हालांकि, फॉर्म आबादी के लिए अपने डोमेन ऑब्जेक्ट क्लासेस का उपयोग करते समय, आप स्प्रिंग फ्रेमवर्क के आसपास हाल की सुरक्षा चिंताओं पर ध्यान देना चाहेंगे। A discussion on the Server Side टिप्पणियों में छेद को बंद करने का तरीका बताता है।

2

"... कौन सा प्रौद्योगिकी आप तुरंत का उपयोग किया था:, जटिल हाइबरनेट ... AOP" - मैं कहेंगे एक बेहतर सवाल पूछने के लिए लोगों को अभी क्या उपयोग नहीं किया होगा। मैं उस सूची में उद्धृत उदाहरण जोड़ दूंगा।

वसंत MVC और JDBC टेम्पलेट मेरा प्रारंभ सिफारिशों होगा। आप बस उन लोगों के साथ बहुत लंबा रास्ता तय कर सकते हैं।

मेरी सिफारिश वसंत वास्तुशिल्प सिफारिशों का ईमानदारी से पालन करना होगा। उनके लेयरिंग विचारों का प्रयोग करें। सुनिश्चित करें कि आपकी वेब परत बाकी से पूरी तरह से अलग करने योग्य है। आप वेब स्तरीय केवल सेवा परत के माध्यम से बैक एंड के साथ इंटरैक्ट करने देकर ऐसा करते हैं।

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

सबसे अच्छा वसंत समर्थन के साथ आईडीई इंटेलीजे है।कुछ रुपये खर्च करने लायक है।

1

स्प्रिंग 2.5 और 3.0 के रिलीज के साथ, मुझे लगता है कि अब लाभ लेने के लिए सबसे महत्वपूर्ण सर्वोत्तम प्रथाओं में से एक वसंत एनोटेशन हैं। नियंत्रकों, सेवाओं और रेपॉजिटरीज़ के लिए टिप्पणियां आपको एक टन बचा सकती हैं, जिससे आप अपने ऐप के व्यावसायिक तर्क पर ध्यान केंद्रित कर सकते हैं, और संभावित रूप से आप अपने सभी ऑब्जेक्ट सादे पुराने जावा ऑब्जेक्ट्स (पीओजेओ) को कर सकते हैं।

4

सबसे पहले वसंत मॉड्यूलरिटी के बारे में है और सबसे अच्छा काम करता है अगर कोई छोटे घटकों को लिखने पर केंद्रित होता है जो एक काम करता है और इसे अच्छी तरह से करता है। बजाय

  • एक इंटरफेस को परिभाषित करना सार कक्षाएं
  • अपरिवर्तनीय
  • एक भी वर्ग के लिए संभव के रूप में कुछ के रूप में निर्भरता रखें प्रकार बनाना:

    आप सामान्य की तरह में सर्वोत्तम प्रथाओं का पालन करें।

  • प्रत्येक कक्षा को एक काम करना चाहिए और इसे अच्छी तरह से करना चाहिए। बिग मोनोलिथिक क्लासेस चूसते हैं, उन्हें परीक्षण करना मुश्किल होता है और उपयोग करना मुश्किल होता है।

यदि आपके घटक छोटे हैं और उपरोक्त dogmas का पालन करें तो उन्हें तारों और अन्य सामानों के साथ खेलने के लिए आसान होना चाहिए। उपरोक्त बिंदु स्वाभाविक रूप से स्प्रिंग ढांचे के बारे में भी सच हैं।

पुनश्च

न ऊपर अंक सुनने के लिए, कि वे किस तरह जो कुछ भी करने के बारे में बात कर रहे हैं। कुछ सीखने के बजाय सोचने के लिए सीखना और अधिक महत्वपूर्ण है। मनुष्य सोच सकते हैं, कुछ दोहराना चालाक नहीं है, सोच है।

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