බොහෝ පිළිතුරු වල දැනටමත් මෙම විවරණයන් භාවිතා කරන්නේ කුමක් දැයි සඳහන් කර ඇති හෙයින්, අපි මෙහි අවධානය යොමු කරන්නේ ඒවා අතර සුළු වෙනස්කම් කිහිපයක් පිළිබඳව ය.
පළමුව සමානතාව
නැවත ඉස්මතු කර දැක්විය යුතු පළමු කරුණ නම්, බීන් නිර්වචනය සඳහා ස්කෑන්-ස්වයංක්රීයව අනාවරණය කර ගැනීම සහ පරායත්ත එන්නත් කිරීම සම්බන්ධයෙන් මෙම සියලු විවරණ (එනම්, 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
විවරණයන් සමඟ විවරණය කර ඇති අතර එයින් අදහස් වන්නේ ඒවා ද @Component
s ය. අපි අපේම අභිරුචි විවරණය නිර්වචනය කර එය සමඟ විවරණය @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
ඔවුන්ගේ අතු බැඳීම සම්මුති මත පදනම්. එබැවින් සමුළුවට ගරු කිරීම සහ එය ස්ථරවලට අනුකූලව භාවිතා කිරීම සැමවිටම හොඳ අදහසකි.