सवाल वसंत में @ कॉम्पोनेंट, @ रिपोजिटरी और @ सेवा एनोटेशन के बीच क्या अंतर है?


कर सकते हैं @Component, @Repository तथा @Service एनोटेशन स्प्रिंग में एक दूसरे के लिए इस्तेमाल किया जा सकता है या क्या वे नोटेशन डिवाइस के रूप में कार्य करने के अलावा कोई विशेष कार्यक्षमता प्रदान करते हैं?

दूसरे शब्दों में, यदि मेरे पास सेवा कक्षा है और मैं एनोटेशन बदलता हूं @Service सेवा मेरे @Component, क्या यह अभी भी वैसे ही व्यवहार करेगा?

या एनोटेशन कक्षा के व्यवहार और कार्यक्षमता को भी प्रभावित करता है?


1523
2017-07-26 09:10


मूल


माइक्रोसॉफ्ट पृष्ठभूमि के साथ एक डेवलपर होने के नाते, मुझे पुराने एमएस स्मार्ट क्लाइंट सॉफ्टवेयर सॉफ्टवेयर संरचना में सेवाओं की अर्थपूर्ण परिभाषा याद है (अब वितरित डेस्कटॉप ऐप्स के लिए एक लंबा बहिष्कृत जटिल ढांचा)। वह परिभाषा (अच्छी तरह से प्रलेखित रिच न्यूमैन द्वारा) ने सेवाओं को स्टेटलेस पुन: प्रयोज्य वस्तुओं के रूप में परिभाषित किया, अधिमानतः सिंगलटन स्कोप के साथ, जिनका प्रयोग तर्कसंगतता के रूप में पारित अन्य वस्तुओं पर व्यापार तर्क परिचालन करने के लिए किया जाता है। मैं वसंत सेवाओं को उसी तरह देखना चाहता हूं - Ivaylo Slavov
कोई फर्क नहीं पड़ता!! जो कुछ भी आपके लिए काम करता है :) मैंने हमेशा इस वसंत के बारे में नफरत की है कि वे हमेशा आपके लिए "नियम" परिभाषित करते हैं, जो केवल आपके आवेदन के लिए मामूली मूल्य जोड़ते हैं। उल्लेख नहीं है वसंत अपने स्वयं के विशाल ढेर के साथ आता है। - TriCore
@TriCore Sprting एक ढांचा है, आपके लिए "नियम" परिभाषित करना है :) - Walfrat


जवाब:


से वसंत दस्तावेज़ीकरण:

वसंत 2.0 और बाद में, में @Repository एनोटेशन के लिए एक मार्कर है   कोई भी वर्ग जो भूमिका या स्टीरियोटाइप को पूरा करता है (डेटा के रूप में भी जाना जाता है   एक वस्तु का ऑब्जेक्ट या डीएओ एक्सेस करें)। इस मार्कर के उपयोगों में से   अपवादों का स्वचालित अनुवाद है।

स्प्रिंग 2.5 आगे स्टीरियोटाइप एनोटेशन पेश करता है: @Component,    @Service, तथा @Controller@Component किसी के लिए एक सामान्य स्टीरियोटाइप है   वसंत-प्रबंधित घटक। @Repository, @Service, तथा @Controller कर रहे हैं   की विशेषज्ञता @Component के लिए अधिक विशिष्ट उपयोग मामलों के लिए   उदाहरण, दृढ़ता, सेवा, और प्रस्तुति परतों में,   क्रमशः।

इसलिए, आप अपने घटक वर्गों के साथ एनोटेट कर सकते हैं @Component,   लेकिन उन्हें एनोटेट करके @Repository, @Service, या @Controller   इसके बजाए, आपके वर्ग उपकरण द्वारा प्रसंस्करण के लिए अधिक उपयुक्त हैं   या पहलुओं के साथ सहयोग। उदाहरण के लिए, इन स्टीरियोटाइप एनोटेशन   पॉइंटकट के लिए आदर्श लक्ष्य बनाओ।

इस प्रकार, यदि आप उपयोग के बीच चयन कर रहे हैं @Component या @Service के लिये   आपकी सेवा परत, @Service स्पष्ट रूप से बेहतर विकल्प है। इसी तरह,   जैसा की ऊपर कहा गया है, @Repository पहले से ही मार्कर के रूप में समर्थित है   आपकी दृढ़ता परत में स्वचालित अपवाद अनुवाद।

┌────────────┬─────────────────────────────────────────────────────┐
│ Annotation │ Meaning                                             │
├────────────┼─────────────────────────────────────────────────────┤
│ @Component │ generic stereotype for any Spring-managed component │
│ @Repository│ stereotype for persistence layer                    │
│ @Service   │ stereotype for service layer                        │
│ @Controller│ stereotype for presentation layer (spring-mvc)      │
└────────────┴─────────────────────────────────────────────────────┘

1119
2017-08-01 10:20



क्या @Controller (या @Component) को @WebServlet में जोड़ने का अर्थ होगा? यह एक वसंत एमवीसी नियंत्रक नहीं है, लेकिन यह अवधारणात्मक निकटतम मैच है। सर्वलेट फिल्टर के बारे में क्या? - Rick
आपकी दृढ़ता परत में स्वचालित अपवाद अनुवाद के लिए "@ रिपॉजिटरी पहले ही मार्कर के रूप में समर्थित है।" क्या मतलब है? - Jack
यह इस तथ्य का जिक्र कर रहा है कि ये एनोटेशन एओपी के लिए अच्छे लक्ष्य हैं, और जबकि अन्य एनोटेशन अभी तक एक पॉइंटकट परिभाषित नहीं करते हैं, वे भविष्य में ऐसा कर सकते हैं। दूसरी ओर @ रिपोजिटरी वर्तमान में एक बिंदु के लिए पहले से ही एक लक्ष्य है। उस पॉइंटकट का उपयोग अपवाद अनुवादों के लिए किया जाता है, यानी तंग युग्मन से बचने के लिए, अधिक सामान्य वसंत-आधारित वाले लोगों के लिए प्रौद्योगिकी-विशिष्ट अपवादों का अनुवाद करना। - stivlo
@stivlo: मैंने वास्तव में 'स्टीरियोटाइप' शब्द को समझने की कोशिश की है, अभी भी समझ में नहीं आया है। क्या आप कृपया इस शब्दावली को समझने में मेरी मदद कर सकते हैं? यह बहुत मदद करता है और आपको बहुत धन्यवाद - Premraj
stackoverflow.com/questions/14756486/... - stivlo


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

पहले समानता 

फिर से हाइलाइट करने का पहला बिंदु यह है कि बीनडिफिनिशन के लिए स्कैन-ऑटो-डिटेक्शन और निर्भरता इंजेक्शन के संबंध में इन सभी एनोटेशन (जैसे। @ कॉम्पोनेंट, @ सेवा,   @ रिपोजिटरी, @ कंट्रोलर) वही हैं। हम एक जगह का उपयोग कर सकते हैं   एक और का और अभी भी अपना रास्ता मिल सकता है।


@ कॉम्पोनेंट, @ रिपोजिटरी, @ कंट्रोलर और @ सेवा के बीच मतभेद

@Component

यह एक सामान्य उद्देश्य वाली स्टीरियोटाइप एनोटेशन है जो दर्शाता है कि कक्षा एक वसंत घटक है।

@ कॉम्पोनेंट के बारे में क्या खास है
<context:component-scan> केवल स्कैन @Component और नहीं देखता है @Controller, @Service तथा @Repository सामान्य रूप में। वे स्कैन किए गए हैं क्योंकि वे स्वयं के साथ एनोटेटेड हैं @Component

बस एक नज़र डालें @Controller, @Service तथा @Repository एनोटेशन परिभाषाएं:

@Component
public @interface Service {
    ….
}

@Component
public @interface Repository {
    ….
}

@Component
public @interface Controller {
    …
}

इस प्रकार, यह कहना गलत नहीं है @Controller, @Service तथा @Repository विशेष प्रकार के हैं @Component एनोटेशन। <context:component-scan> उन्हें उठाता है और अपने निम्नलिखित वर्गों को सेम के रूप में पंजीकृत करता है, जैसे कि उन्हें एनोटेट किया गया था @Component

वे स्कैन किए गए हैं क्योंकि वे स्वयं के साथ एनोटेटेड हैं @Component एनोटेशन। अगर हम अपनी खुद की कस्टम एनोटेशन को परिभाषित करते हैं और इसे एनोटेट करते हैं @Component, तो यह भी स्कैन किया जाएगा <context:component-scan>


@Repository

यह इंगित करना है कि कक्षा डेटा भंडार को परिभाषित करती है।

@ रिपोजिटरी के बारे में क्या खास है? 

यह इंगित करने के अलावा कि यह एक है एनोटेशन आधारित कॉन्फ़िगरेशन, @Repositoryप्लेटफार्म विशिष्ट अपवादों को पकड़ना और स्प्रिंग के एकीकृत अनचेक अपवाद के रूप में उन्हें फिर से फेंकना है। और इसके लिए, हम प्रदान कर रहे हैं PersistenceExceptionTranslationPostProcessor, कि हमें इस तरह के हमारे वसंत के आवेदन संदर्भ में जोड़ना होगा:

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

यह बीन पोस्ट प्रोसेसर किसी भी बीन के सलाहकार को जोड़ता है जिसके साथ एनोटेट किया गया है @Repository ताकि किसी भी प्लेटफॉर्म-विशिष्ट अपवाद पकड़े जा सकें और फिर स्प्रिंग के अनचेक डेटा एक्सेस अपवादों में से एक के रूप में पुनर्स्थापित हो जाएं।


@Controller

@Controller एनोटेशन इंगित करता है कि एक विशेष वर्ग नियंत्रक की भूमिका निभाता है। @Controller एनोटेशन एनोटेटेड क्लास के लिए एक स्टीरियोटाइप के रूप में कार्य करता है, जो इसकी भूमिका का संकेत देता है।

@ नियंत्रक के बारे में क्या खास है? 

हम इस एनोटेशन को किसी अन्य के साथ स्विच नहीं कर सकते हैं @Service या @Repository, भले ही वे समान दिखते हैं। प्रेषक के साथ एनोटेटेड कक्षाओं को स्कैन करता है @Controller और पता लगाता है @RequestMapping उनके भीतर एनोटेशन। हम केवल उपयोग कर सकते हैं @RequestMapping पर @Controller एनोटेटेड कक्षाएं


@सर्विस

@Services रिपोजिटरी परत में व्यापार तर्क और कॉल विधि पकड़ो।

@ सेवा के बारे में क्या खास है? 

इस तथ्य के अलावा कि इसका उपयोग यह इंगित करने के लिए किया जाता है कि यह व्यापार तर्क धारण कर रहा है, इस टिप्पणी में कोई उल्लेखनीय विशेषता नहीं है कि यह एनोटेशन प्रदान करता है, लेकिन कौन जानता है, वसंत भविष्य में कुछ अतिरिक्त असाधारण जोड़ सकता है।


और क्या?

उपर्युक्त के समान, भविष्य में वसंत के लिए विशेष कार्यक्षमताओं को जोड़ना चुन सकता है @Service, @Controller तथा @Repository उनके लेयरिंग सम्मेलनों के आधार पर। इसलिए यह हमेशा सम्मेलन का सम्मान करने और परतों के अनुरूप उन्हें उपयोग करने का एक अच्छा विचार है।


426
2017-07-24 06:43



यह मेरा पसंदीदा है। इस प्रश्न के लिए बहुत अच्छे उत्तर हैं और मैं आपको उन सभी को पढ़ने के लिए प्रोत्साहित करता हूं, लेकिन यह एनोटेशन के बीच भिन्नता पर जोर देता है। - Adrian Cosma
अच्छा छोटा साफ स्पष्टीकरण - VedX
इस उत्तर की प्रशंसा करने के लिए कोई शब्द नहीं। प्रत्येक कथन समझने के लिए इतना स्पष्ट और आसान है। - MAC
यहां दिया गया स्पष्टीकरण संक्षेप में और बिंदु पर है। यह एकमात्र संतोषजनक उत्तर है जो मैंने बहुत दूर किया है - Julius Krah
यह जवाब है। - Alessandro


वे लगभग समान हैं - उनमें से सभी का मतलब है कि कक्षा एक वसंत बीन है। @Service, @Repository तथा @Controller विशेष हैं @Componentरों। आप उनके साथ विशिष्ट कार्यवाही करने का चयन कर सकते हैं। उदाहरण के लिए:

  • @Controller वसंत-एमवीसी द्वारा सेम का उपयोग किया जाता है
  • @Repository सेम दृढ़ता अपवाद अनुवाद के लिए योग्य हैं

एक और बात यह है कि आप घटकों को अलग-अलग परतों में अर्थात् निर्दिष्ट करते हैं।

एक बात है कि @Component ऑफ़र यह है कि आप इसके साथ अन्य एनोटेशन एनोटेट कर सकते हैं, और फिर उन्हें उसी तरह इस्तेमाल कर सकते हैं @Service

उदाहरण के लिए मैंने हाल ही में बनाया:

@Component
@Scope("prototype")
public @interface ScheduledJob {..}

तो सभी वर्गों के साथ एनोटेटेड @ScheduledJob वसंत सेम हैं और इसके अलावा क्वार्ट्ज नौकरियों के रूप में पंजीकृत हैं। आपको केवल कोड प्रदान करना होगा जो विशिष्ट एनोटेशन को संभालता है।


388
2017-07-26 09:16



@ कॉम्पोनेंट का अर्थ केवल वसंत बीन है, इसके लिए कोई अन्य उद्देश्य है? - kapil das
@ कॉम्पोनेंट बीन्स वसंत कंटेनर द्वारा ऑटो डिटेक्टिव हैं। आपको कॉन्फ़िगरेशन फ़ाइल में बीन को परिभाषित करने की आवश्यकता नहीं है, यह स्वचालित रूप से स्प्रिंग द्वारा रनटाइम पर पता लगाया जाएगा। - Akash5288
मैं जेनेरिक @ कॉम्पोनेंट का बहुत शौकिया हूं ... खासकर कॉम्बो में @ स्कोप (प्रॉक्सीमोड = स्कोप्डप्रोक्सी मोड .// एमओडीई) - Eddie B


@ कॉम्पोनेंट बराबर है

<bean>

@ सेवा, @ नियंत्रक, @ रिपोजिटरी = {@ कॉम्पोनेंट + कुछ और विशेष कार्यक्षमता}

इसका मतलब है सेवा, नियंत्रक और रिपोजिटरी कार्यात्मक रूप से वही हैं।

तीन एनोटेशन अलग करने के लिए उपयोग किया जाता है "परतें" आपके आवेदन में,

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

अब आप पूछ सकते हैं कि उन्हें अलग क्यों करें: (मुझे लगता है कि आप एओपी-आस्पेक्ट ओरिएंटेड प्रोग्रामिंग जानते हैं)

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

तो आप डीएओ विधियों के "डीएओ", "पहले" या "बाद" के लॉगिंग कर सकते हैं। आप ऐसा कर सकते हैं क्योंकि आपके पास पहले स्थान पर डीएओ था। आपने जो अभी हासिल किया है वह है चिंताओं या कार्यों का पृथक्करण।

कल्पना करें कि अगर केवल एक एनोटेशन @ कंट्रोलर था, तो इस घटक में प्रेषण, व्यवसाय तर्क और सभी मिश्रित डेटाबेस तक पहुंच होगी, इसलिए गंदे कोड!

ऊपर उल्लिखित एक बहुत ही आम परिदृश्य है, तीन एनोटेशन का उपयोग करने के कई और मामले हैं।


333
2018-05-23 05:15



मुझे एक मौलिक सवाल मिला - वसंत तंत्र द्वारा उपयोग की जाने वाली टिप्पणियां हैं या वे प्रोग्रामर के लिए याद हैं कि कोड के उन टुकड़े क्या करते हैं? - user107986
@ user107986 वे मुख्य रूप से प्रोग्रामर के लिए आवेदन में परतों को याद रखने के लिए हैं। तथापि @Respository स्वचालित अपवाद अनुवाद सुविधा भी है। जब एक अपवाद होता है @Repository आमतौर पर उस अपवाद के लिए एक हैंडलर होता है और डीएओ कक्षा में प्रयास पकड़ने की आवश्यकता नहीं होती है। इसका उपयोग PersistenceExceptionTranslationPostProcessor के साथ किया जाता है - Oliver
क्या आप एक नमूना कोड लिख सकते हैं कि सभी "@ रिपोजिटरी" वर्ग के लिए संयुक्त बिंदु कैसे लिखें। या तो हम अभिव्यक्तियों का उपयोग करते हैं या बीन नाम का उपयोग करते हैं लेकिन हम कैसे कह सकते हैं कि यह सलाह सभी "@ रिपोजिटरी" कक्षाओं पर लागू होगी। मैं इसका नमूना लेने की कोशिश कर रहा था लेकिन खोजने में सक्षम नहीं था। आपकी मदद वास्तव में सराहना की जाती है। - Moni
साथ ही, जबकि एनोटेशन सभी वर्तमान में समान कार्य करते हैं, यह संभव है कि किसी दिए गए गुण के लिए विशिष्ट कार्यक्षमता भविष्य में जोड़ा जा सके। - Cod3Citrus


वसंत ऋतु में @Component, @Service, @Controller, तथा @Repository स्टीरियोटाइप एनोटेशन हैं जिनका उपयोग इनके लिए किया जाता है:

@Controller: जहां अपने निवेदन  प्रेजेंटेशन पेज से मैपिंग किया गया है। प्रस्तुति परत किसी अन्य फ़ाइल पर नहीं जाएगी जो सीधे जाती है @Controller अनुरोधित पथ के लिए वर्ग और चेक @RequestMapping यदि आवश्यक हो तो विधि कॉल से पहले लिखा गया एनोटेशन।

@Service: सभी व्यावसायिक तर्क यहां हैं यानी डेटा से संबंधित गणनाएं और सभी। व्यापार परत की यह एनोटेशन जिसमें हमारे उपयोगकर्ता सीधे दृढ़ता से कॉल नहीं करते हैं, इसलिए यह इस एनोटेशन का उपयोग करके इस विधि को कॉल करेगा। यह उपयोगकर्ता अनुरोध के अनुसार @ रिपोजिटरी का अनुरोध करेगा

@Repository: यह अनुप्रयोग की दृढ़ता परत (डेटा एक्सेस लेयर) है जो डेटाबेस से डेटा प्राप्त करने के लिए उपयोग की जाती है। अर्थात। सभी डेटाबेस संबंधित संचालन भंडार द्वारा किया जाता है।

@Component - एक घटक स्टीरियोटाइप के साथ अपने अन्य घटकों (उदाहरण के लिए आरईएसटी संसाधन वर्ग) एनोटेट करें।

इंगित करता है कि एक एनोटेटेड क्लास एक "अंग"इस तरह के वर्ग हैं   उपयोग करते समय ऑटो-डिटेक्शन के लिए उम्मीदवार के रूप में माना जाता है   एनोटेशन-आधारित कॉन्फ़िगरेशन और क्लासपाथ स्कैनिंग।

अन्य वर्ग-स्तरीय एनोटेशन को पहचानने के रूप में माना जा सकता है   घटक भी, आमतौर पर एक विशेष प्रकार का घटक: उदा।   @ रिपोजिटरी एनोटेशन या एस्पेक्टजे की @ आस्पेक्ट एनोटेशन।

enter image description here


188
2018-03-25 08:00



ये उत्तर सभी अच्छे और सभी हैं, लेकिन मुझे यकीन है कि हम में से अधिकांश क्या चाहते हैं कि सुविधाओं के कुछ कोड उदाहरण हैं जो सेवा जैसे घटक प्रदान करते हैं कि हम "व्यापार तर्क" जैसे सामान्य विवरण के बजाय हमारे सिर में अधिक ठोस रूप से डाल सकते हैं यह वस्तु अन्यथा, हम अभी भी मानते हैं "ओह यह बढ़िया है और सबकुछ लेकिन मैं अभी भी घटक को एक ही कोड लागू कर सकता हूं" - dtc
नहीं सब व्यापार तर्क सेवाओं में जाना चाहिए! डीडीडी के संदर्भ में सेवाओं में केवल डोमेन तर्क होना चाहिए जो एक से अधिक इकाई को प्रभावित करता है। उत्तर देखो stackoverflow.com/a/41358034/238134 - deamon
@deamon हां लेकिन यह डेवलपर्स दृष्टिकोण पर निर्भर करता है - Harshal Patil
@ हरशपालपिल आप निश्चित रूप से सेवाओं में सभी व्यावसायिक तर्कों के साथ एक आवेदन लिख सकते हैं, लेकिन इससे एनीमिक डोमेन मॉडल का कारण बन जाएगा और यह संस्थाओं पर बाधाओं और स्थिरता को लागू करने के लिए अनावश्यक कठिन बना देगा। - deamon


स्प्रिंग 2.5 आगे स्टीरियोटाइप एनोटेशन प्रस्तुत करता है: @ कॉम्पोनेंट, @ सर्विस और @ कंट्रोलर। @ कॉम्पोनेंट किसी भी वसंत-प्रबंधित घटक के लिए एक सामान्य स्टीरियोटाइप के रूप में कार्य करता है; जबकि, @ रिपोजिटरी, @ सेवा, और @ नियंत्रक अधिक विशिष्ट उपयोग मामलों के लिए @ कॉम्पोनेंट की विशेषज्ञता के रूप में कार्य करते हैं (उदाहरण के लिए, क्रमशः दृढ़ता, सेवा और प्रस्तुति परतों में)। इसका अर्थ यह है कि आप अपने घटक वर्गों को @ कॉम्पोनेंट के साथ एनोटेट कर सकते हैं, लेकिन उन्हें @Repository, @Service, या @Controller के साथ एनोटेट करके, आपकी कक्षाएं उपकरण द्वारा प्रसंस्करण या पहलुओं के साथ संबद्ध होने के लिए अधिक उपयुक्त हैं। उदाहरण के लिए, इन स्टीरियोटाइप एनोटेशन पॉइंटकूट के लिए आदर्श लक्ष्य बनाते हैं। बेशक, यह भी संभव है कि @ रिपोजिटरी, @ सेवा, और @ नियंत्रक स्प्रिंग फ्रेमवर्क के भावी रिलीज में अतिरिक्त अर्थशास्त्र ले सकते हैं। इस प्रकार, यदि आप अपनी सेवा परत के लिए @ कॉम्पोनेंट या @ सेवा का उपयोग करने के बीच निर्णय ले रहे हैं, तो @ सेवा स्पष्ट रूप से बेहतर विकल्प है। इसी तरह, जैसा ऊपर बताया गया है, @Repository पहले से ही आपकी दृढ़ता परत में स्वचालित अपवाद अनुवाद के लिए मार्कर के रूप में समर्थित है।

@Component – Indicates a auto scan component.
@Repository – Indicates DAO component in the persistence layer.
@Service – Indicates a Service component in the business layer.
@Controller – Indicates a controller component in the presentation layer.

संदर्भ: - वसंत दस्तावेज़ीकरण - क्लासपाथ स्कैनिंग, प्रबंधित घटक और जावा का उपयोग कर कॉन्फ़िगरेशन लिखना  


59
2018-05-15 12:48





@Component – Indicates a auto scan component.  
@Repository – Indicates DAO component in the persistence layer.  
@Service – Indicates a Service component in the business layer.   
@Controller – Indicates a controller component in the presentation layer.  

आप सबको ध्यान दिया जाएगा @Repository,@Service या @Controller के साथ एनोटेटेड हैं @Component। तो, हम सिर्फ उपयोग कर सकते हैं @Component ऑटो स्कैनिंग के लिए सभी घटकों के लिए? हां, आप कर सकते हैं, और वसंत स्वचालित रूप से @ कॉम्पोनेंट एनोटेटेड के साथ आपके सभी घटकों को स्कैन करेगा।

यह ठीक काम कर रहा है, लेकिन व्यावहारिकता के लिए एक अच्छा अभ्यास नहीं है, आपको हमेशा घोषणा करनी चाहिए @Repository,@Service या @Controller आपके कोड को पढ़ने के लिए और अधिक आसान बनाने के लिए एक निर्दिष्ट परत के लिए।


51
2017-12-16 18:10