බොහෝ පිළිතුරු වල දැනටමත් මෙම විවරණයන් භාවිතා කරන්නේ කුමක් දැයි සඳහන් කර ඇති හෙයින්, අපි මෙහි අවධානය යොමු කරන්නේ ඒවා අතර සුළු වෙනස්කම් කිහිපයක් පිළිබඳව ය.
පළමුව සමානතාව
නැවත ඉස්මතු කර දැක්විය යුතු පළමු කරුණ නම්, බීන් නිර්වචනය සඳහා ස්කෑන්-ස්වයංක්රීයව අනාවරණය කර ගැනීම සහ පරායත්ත එන්නත් කිරීම සම්බන්ධයෙන් මෙම සියලු විවරණ (එනම්, omp සංයුක්ත, erv සේවා, osRopository, ontController) සමාන වේ. අපට තවත් එකක් වෙනුවට එකක් භාවිතා කළ හැකි අතර තවමත් අපේ ගමන යා හැකිය.
On සංයුක්ත, e නිධිය, ontController සහ @ සේවා අතර වෙනස්කම්
On සංයුක්ත
මෙය පොදු අරමුණු ඒකාකෘති විවරණයකි, එයින් පෙන්නුම් කරන්නේ පන්තිය වසන්ත සංරචකයක් බවයි.
@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විවරණයන් සමඟ විවරණය කර ඇති අතර එයින් අදහස් වන්නේ ඒවා ද @Components ය. අපි අපේම අභිරුචි විවරණය නිර්වචනය කර එය සමඟ විවරණය @Componentකළහොත් එය ද පරිලෝකනය වේ<context:component-scan>
E නිධිය
පංතිය දත්ත ගබඩාවක් නිර්වචනය කරන බව මෙයින් ඇඟවෙයි.
E නිධියෙහි විශේෂත්වය කුමක්ද?
මෙය බව පෙන්වා දෙමින්, අමතරව වින්යාස පදනම් කාරක සභාවකින් , @Repositoryගේ රැකියා උඩ වේදිකාවක් විශේෂිත ව්යතිරේකයන් කිරීමට වන අතර, ඔවුන් වසන්තය ගේ ඒකාබද්ධ පරීක්ෂාවෙන් තොරව හැර එකක් ලෙස නැවත දමන්න. මේ සඳහා, PersistenceExceptionTranslationPostProcessorඅපගේ වසන්තයේ යෙදුම් සන්දර්භය තුළ එකතු කිරීමට අවශ්ය බව අපට ලබා දී ඇත:
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
මෙම බෝංචි පෝස්ට් ප්රොසෙසරය විවරණය කර ඇති ඕනෑම බෝංචි සඳහා උපදේශකයෙකු එක් කරන අතර @Repositoryඑමඟින් ඕනෑම වේදිකා විශේෂිත ව්යතිරේකයක් අල්ලාගෙන නැවත වසන්තයේ අනවසර දත්ත ප්රවේශ ව්යතිරේකයක් ලෙස විසි කරයි.
Ont පාලකය
මෙම @Controllerවිශේෂ පන්ති පාලක භූමිකාව සේවය කරන කාරක සභාවකින් බවයි. මෙම @Controllerකාරක සභාවකින් තම භූමිකාව දුරකින් විවරණ සහිත පන්තිය සඳහා ඒකාකෘතික ලෙස ක්රියා.
OntController හි විශේෂත්වය කුමක්ද?
අපට මෙම විවරණය වෙනත් පෙනුමක් @Serviceහෝ වෙනත් ඒවා සමඟ මාරු කළ නොහැක @Repository. පිටත්කරුවා විසින් විවරණය කරන ලද පංති පරිලෝකනය කරන අතර ඒවා තුළ විවරණයන් @Controllerසමඟ @RequestMappingවිවරණය කළ ක්රම හඳුනා ගනී . අපි භාවිතා කළ හැකි @RequestMappingසිය පන්ති ග්රන්ථ කරන අය ක්රම පමණක් / මත @Controllerසහ එය නොවේ සමග වැඩ @Component, @Service, @Repositoryආදිය ...
සටහන: පන්ති දැනටමත් බෝංචි ඕනෑම විකල්ප ක්රම මඟින්, වැනි හරහා ලියාපදිංචි වී තිබේ නම්, @Beanහෝ හරහා @Component, @Serviceආදිය ... විවරණයන් ඉදිරිපත්, එවිට @RequestMappingපන්ති ද සමග ග්රන්ථ නම් තෝරා ගත හැකි @RequestMappingකාරක සභාවකින්. නමුත් එය වෙනස් අවස්ථාවක්.
@සේවා
@Service බෝංචි ව්යාපාර තාර්කිකත්වය සහ ඇමතුම් ක්රම නිධිය ස්ථරයේ රඳවා තබා ගනී.
Erv සේවාවේ විශේෂත්වය කුමක්ද?
එය ව්යාපාර තර්කනය දරණ බව දැක්වීමට භාවිතා කර ඇති කාරණය හැරුණු විට, මෙම විවරණයේ තවත් කැපී පෙනෙන දෙයක් නොමැත; නමුත් කවුද දන්නේ, වසන්තය අනාගතයේදී තවත් සුවිශේෂී යමක් එකතු කරයි.
වෙන මොනවද?
අනාගතයේ දී, ඉහත සමාන වසන්තය විශේෂ අංගයන් එකතු විය හැක @Service, @Controllerහා @Repositoryඔවුන්ගේ අතු බැඳීම සම්මුති මත පදනම්. එබැවින් සමුළුවට ගරු කිරීම සහ එය ස්ථරවලට අනුකූලව භාවිතා කිරීම සැමවිටම හොඳ අදහසකි.