Dependency injection
மென்பொருள் பொறியியலில், சார்பு ஊசி என்பது ஒரு நிரலாக்க நுட்பமாகும், இதில் ஒரு பொருள் அல்லது செயல்பாடு அதற்குத் தேவையான பிற பொருள்கள் அல்லது செயல்பாடுகளைப் பெறுகிறது, மாறாக அவற்றை உள்நாட்டில் உருவாக்குகிறது. சார்பு உட்செலுத்துதல் என்பது பொருட்களை உருவாக்குவதிலும் அவற்றைப் பயன்படுத்துவதிலும் உள்ள கவலைகளை பிரிப்பதை நோக்கமாகக் கொண்டுள்ளது, இது தளர்வாக இணைக்கப்பட்ட நிரல்களுக்கு வழிவகுக்கிறது. கொடுக்கப்பட்ட சேவையைப் பயன்படுத்த விரும்பும் ஒரு பொருள் அல்லது செயல்பாடு அந்த சேவைகளை எவ்வாறு உருவாக்குவது என்பதை அறிய வேண்டியதில்லை என்பதை இந்த முறை உறுதி செய்கிறது. அதற்கு பதிலாக, பெறும் 'கிளையன்ட்' (பொருள் அல்லது செயல்பாடு) அதன் சார்புநிலைகளை வெளிப்புற குறியீடு (ஒரு 'இன்ஜெக்டர்') மூலம் வழங்குகிறது, இது அவருக்குத் தெரியாது. சார்பு ஊசி மறைமுக சார்புநிலைகளை வெளிப்படையாக்குகிறது மற்றும் பின்வரும் சிக்கல்களைத் தீர்க்க உதவுகிறதுஃ ஒரு வர்க்கம் அது சார்ந்திருக்கும் பொருட்களின் உருவாக்கத்திலிருந்து எவ்வாறு சுயாதீனமாக இருக்க முடியும்? ஒரு பயன்பாடு மற்றும் அது பயன்படுத்தும் பொருள்கள் வெவ்வேறு உள்ளமைவுகளை எவ்வாறு ஆதரிக்க முடியும்? ஒரு குறியீட்டை நேரடியாகத் திருத்தாமல் அதன் நடத்தையை எவ்வாறு மாற்ற முடியும்? சார்பு ஊசி பெரும்பாலும் சார்பு தலைகீழ் கொள்கையுடன் குறியீட்டை இணைக்க பயன்படுத்தப்படுகிறது. சார்பு உட்செலுத்துதலைப் பயன்படுத்தி நிலையான-தட்டச்சு செய்யப்பட்ட மொழிகளில், ஒரு வாடிக்கையாளர் தங்கள் உறுதியான செயல்பாடுகளைக் காட்டிலும், அது பயன்படுத்தும் சேவைகளின் இடைமுகங்களை மட்டுமே அறிவிக்க வேண்டும், இதனால் எந்த சேவைகள் மீண்டும் தொகுக்காமல் இயக்க நேரத்தில் பயன்படுத்தப்படுகின்றன என்பதை மாற்றுவதை எளிதாக்குகிறது. பயன்பாட்டு கட்டமைப்புகள் பெரும்பாலும் சார்பு ஊசியை கட்டுப்பாட்டின் தலைகீழ் மாற்றத்துடன் இணைக்கின்றன. கட்டுப்பாட்டின் தலைகீழ் கீழ், கட்டமைப்பானது முதலில் ஒரு பொருளை (ஒரு கட்டுப்படுத்தி போன்றவை) உருவாக்குகிறது, பின்னர் அதற்கு கட்டுப்பாட்டு ஓட்டத்தை அனுப்புகிறது. சார்பு ஊசி மூலம், கட்டமைப்பானது பயன்பாட்டு பொருளால் அறிவிக்கப்பட்ட சார்பு நிலைகளை (பெரும்பாலும் கட்டமைப்பாளர் முறையின் அளவுருக்களில்) உடனடியாக உறுதிப்படுத்துகிறது, மேலும் சார்பு நிலைகளை பொருளுக்குள் அனுப்புகிறது. சார்பு ஊசி "சார்பு செயல்பாடுகளின் மீது தலைகீழ் கட்டுப்பாடு" என்ற கருத்தை செயல்படுத்துகிறது, அதனால்தான் சில ஜாவா கட்டமைப்புகள் பொதுவாக "கட்டுப்பாட்டின் தலைகீழ்" (கட்டுப்பாட்டு ஓட்டத்தின் தலைகீழ் என்று குழப்பமடையக்கூடாது) என்ற கருத்தை அழைக்கிறது. பாத்திரங்கள் சார்பு ஊசி நான்கு பாத்திரங்களை உள்ளடக்கியதுஃ சேவைகள், வாடிக்கையாளர்கள், இடைமுகங்கள் மற்றும் உட்செலுத்திகள். சேவைகள் மற்றும் வாடிக்கையாளர்கள் ஒரு சேவை என்பது பயனுள்ள செயல்பாட்டைக் கொண்ட எந்த வகுப்பையும் குறிக்கிறது. இதையொட்டி, ஒரு வாடிக்கையாளர் என்பது சேவைகளைப் பயன்படுத்தும் எந்த வகுப்பையும் குறிக்கிறது. ஒரு வாடிக்கையாளருக்குத் தேவைப்படும் சேவைகள் வாடிக்கையாளரின் சார்புநிலைகளாகும். எந்தவொரு பொருளும் ஒரு சேவையாகவோ அல்லது வாடிக்கையாளராகவோ இருக்கலாம்; பெயர்கள் ஒரு ஊசியில் பொருள்கள் வகிக்கும் பங்குடன் மட்டுமே தொடர்புடையவை. ஒரே பொருள் ஒரு வாடிக்கையாளர் (இது உட்செலுத்தப்பட்ட சேவைகளைப் பயன்படுத்துகிறது) மற்றும் ஒரு சேவை (இது மற்ற பொருட்களில் உட்செலுத்தப்படுகிறது) ஆகிய இரண்டாகவும் இருக்கலாம். ஊசி போடப்பட்டவுடன், சேவை வாடிக்கையாளரின் மாநிலத்தின் ஒரு பகுதியாக மாற்றப்பட்டு, பயன்பாட்டிற்கு கிடைக்கிறது. இடைமுக வாடிக்கையாளர்கள் தங்கள் சார்புகள் எவ்வாறு செயல்படுத்தப்படுகின்றன என்பதை அறியக்கூடாது, அவர்களின் பெயர்கள் மற்றும் ஏபிஐ மட்டுமே. மின்னஞ்சல்களை மீட்டெடுக்கும் ஒரு சேவை, எடுத்துக்காட்டாக, திரைக்குப் பின்னால் ஐ. எம். ஏ. பி அல்லது பி. ஓ. பி 3 நெறிமுறைகளைப் பயன்படுத்தலாம், ஆனால் இந்த விவரம் ஒரு மின்னஞ்சலை மீட்டெடுக்க விரும்பும் குறியீட்டை அழைப்பதற்கு பொருத்தமற்றதாக இருக்கலாம். செயல்படுத்தல் விவரங்களை புறக்கணிப்பதன் மூலம், வாடிக்கையாளர்கள் தங்கள் சார்பு நிலைகளை மாற்ற வேண்டிய அவசியமில்லை. ஊசி ஊசி, சில நேரங்களில் அசெம்ப்ளர், கொள்கலன், வழங்குநர் அல்லது தொழிற்சாலை என்றும் அழைக்கப்படுகிறது, வாடிக்கையாளருக்கு சேவைகளை அறிமுகப்படுத்துகிறது. உட்செலுத்திகளின் பங்கு சிக்கலான பொருள் வரைபடங்களை உருவாக்கி இணைப்பதாகும், அங்கு பொருள்கள் வாடிக்கையாளர்கள் மற்றும் சேவைகளாக இருக்கலாம். ஊசி தானாகவே ஒன்றாக வேலை செய்யும் பல பொருள்களாக இருக்கலாம், ஆனால் வாடிக்கையாளராக இருக்கக்கூடாது, ஏனெனில் இது ஒரு வட்ட சார்புநிலையை உருவாக்கும். சார்பு ஊசி பொருள்கள் எவ்வாறு கட்டமைக்கப்படுகின்றன என்பதையும் அவை எவ்வாறு பயன்படுத்தப்படுகின்றன என்பதையும் பிரிப்பதால், பெரும்பாலான பொருள் சார்ந்த மொழிகளில் காணப்படும் புதிய முக்கிய வார்த்தையின் முக்கியத்துவத்தை இது பெரும்பாலும் குறைக்கிறது. கட்டமைப்பானது சேவைகளை உருவாக்குவதைக் கையாளுவதால், புரோகிராமர் திட்டத்தின் களத்தில் உள்ள நிறுவனங்களைக் குறிக்கும் மதிப்பு பொருள்களை மட்டுமே நேரடியாக உருவாக்க முனைகிறார் (வணிக பயன்பாட்டில் பணியாளர் பொருள் அல்லது ஷாப்பிங் பயன்பாட்டில் ஆர்டர் பொருள் போன்றவை). ஒப்புமை ஒரு ஒப்புமையாக, மக்களை ஒரு இடத்திலிருந்து இன்னொரு இடத்திற்கு கொண்டு செல்லும் பயனுள்ள பணியைச் செய்யும் சேவைகளாக கார்களைக் கருதலாம். கார் என்ஜின்களுக்கு எரிவாயு, டீசல் அல்லது மின்சாரம் தேவைப்படலாம், ஆனால் இந்த விவரம் வாடிக்கையாளருக்கு முக்கியமல்ல-ஒரு ஓட்டுநர்-அது அவர்களின் இலக்கை அடைய முடியுமா என்று மட்டுமே கவலைப்படுகிறார். கார்கள் அவற்றின் பெடல்கள், ஸ்டீயரிங் சக்கரங்கள் மற்றும் பிற கட்டுப்பாடுகள் மூலம் ஒரு சீரான இடைமுகத்தை வழங்குகின்றன. எனவே, தொழிற்சாலை வரிசையில் அவை எந்த இயந்திரத்துடன் 'உட்செலுத்தப்பட்டன' என்பது முக்கியமல்ல, ஓட்டுநர்கள் தேவைக்கேற்ப எந்த வகையான காருக்கும் இடையில் மாறலாம். நன்மைகள் மற்றும் தீமைகள் சார்பு ஊசியின் ஒரு அடிப்படை நன்மை வகுப்புகளுக்கும் அவற்றின் சார்பு நிலைகளுக்கும் இடையிலான இணைப்பைக் குறைப்பதாகும். அதன் சார்பு முறைகள் எவ்வாறு செயல்படுத்தப்படுகின்றன என்பது பற்றிய வாடிக்கையாளரின் அறிவை அகற்றுவதன் மூலம், நிரல்கள் மீண்டும் பயன்படுத்தக்கூடியதாகவும், சோதிக்கக்கூடியதாகவும், பராமரிக்கக்கூடியதாகவும் மாறும். இது அதிகரித்த நெகிழ்வுத்தன்மையையும் விளைவிக்கிறதுஃ வாடிக்கையாளர் எதிர்பார்க்கும் உள்ளார்ந்த இடைமுகத்தை ஆதரிக்கும் எதையும் ஒரு வாடிக்கையாளர் செயல்படுத்தலாம். மேலும் பொதுவாக, சார்பு ஊசி பாய்லர் பிளேட் குறியீட்டைக் குறைக்கிறது, ஏனெனில் அனைத்து சார்பு உருவாக்கமும் ஒரு ஒற்றை கூறால் கையாளப்படுகிறது. இறுதியாக, சார்பு ஊசி ஒரே நேரத்தில் வளர்ச்சியை அனுமதிக்கிறது. இரண்டு டெவலப்பர்கள் ஒருவருக்கொருவர் பயன்படுத்தும் வகுப்புகளை சுயாதீனமாக உருவாக்க முடியும், அதே நேரத்தில் வகுப்புகள் தொடர்பு கொள்ளும் இடைமுகத்தை மட்டுமே தெரிந்து கொள்ள வேண்டும். செருகுநிரல்கள் பெரும்பாலும் மூன்றாம் தரப்பினரால் உருவாக்கப்படுகின்றன, அவை அசல் தயாரிப்பின் டெவலப்பர்களுடன் கூட பேசுவதில்லை. சார்பு ஊசியின் பல நன்மைகள் அலகு-சோதனைக்கு குறிப்பாக பொருத்தமானவை. எடுத்துக்காட்டாக, ஒரு கணினியின் உள்ளமைவு விவரங்களை உள்ளமைவு கோப்புகளாக வெளிப்புறமாக்க சார்பு ஊசி பயன்படுத்தப்படலாம், இது மறு தொகுப்பு இல்லாமல் கணினியை மறுசீரமைக்க அனுமதிக்கிறது. கூறுகளின் வெவ்வேறு செயல்பாடுகள் தேவைப்படும் வெவ்வேறு சூழ்நிலைகளுக்கு தனித்தனி உள்ளமைவுகளை எழுதலாம். இதேபோல், சார்பு ஊசி குறியீடு நடத்தையில் எந்த மாற்றமும் தேவையில்லை என்பதால், இது ஒரு மறுசீரமைப்பாக மரபு குறியீட்டிற்கு பயன்படுத்தப்படலாம். இது வாடிக்கையாளர்களை மிகவும் சுயாதீனமாக்குகிறது மற்றும் சோதனையின் கீழ் இல்லாத பிற பொருட்களை உருவகப்படுத்தும் ஸ்டப்கள் அல்லது போலி பொருட்களைப் பயன்படுத்தி தனிமையில் அலகு சோதனையை எளிதாக்குகிறது. சோதனையின் இந்த எளிமை பெரும்பாலும் சார்பு ஊசியைப் பயன்படுத்தும் போது கவனிக்கப்படும் முதல் நன்மை. குறைபாடுகள் சார்பு உட்செலுத்துதலின் விமர்சகர்கள் இது என்று வாதிடுகின்றனர்ஃ உள்ளமைவு விவரங்களைக் கோரும் வாடிக்கையாளர்களை உருவாக்குகிறது, இது வெளிப்படையான இயல்புநிலைகள் கிடைக்கும்போது கடினமாக இருக்கலாம். குறியீட்டைக் கண்டுபிடிப்பது கடினம், ஏனெனில் இது நடத்தையை கட்டுமானத்திலிருந்து பிரிக்கிறது. இது பொதுவாக பிரதிபலிப்பு அல்லது மாறும் நிரலாக்கத்துடன் செயல்படுத்தப்படுகிறது, இது ஐடிஇ ஆட்டோமேஷனைத் தடுக்கிறது. பொதுவாக அதிக முன்கூட்டிய மேம்பாட்டு முயற்சி தேவைப்படுகிறது. ஒரு கட்டமைப்பைச் சார்ந்திருப்பதை ஊக்குவிக்கிறது. சார்பு உட்செலுத்துதலின் வகைகள் ஒரு வாடிக்கையாளர் உட்செலுத்தப்பட்ட சேவைகளைப் பெற மூன்று முக்கிய வழிகள் உள்ளனஃ கட்டமைப்பாளர் உட்செலுத்துதல், இதில் வாடிக்கையாளரின் வகுப்பு கட்டமைப்பாளர் மூலம் சார்பு வகைகள் வழங்கப்படுகின்றன. செட்டர் ஊசி, வாடிக்கையாளர் ஒரு செட்டர் முறையை வெளிப்படுத்துகிறார், இது சார்புநிலையை ஏற்றுக்கொள்கிறது. இடைமுக ஊசி, அங்கு சார்பு இடைமுகம் ஒரு ஊசி முறையை வழங்குகிறது, இது எந்தவொரு வாடிக்கையாளருக்கும் அனுப்பப்படும் சார்பு முறையை செலுத்தும். சில கட்டமைப்புகளில், வாடிக்கையாளர்கள் சார்பு ஊசியை தீவிரமாக ஏற்றுக்கொள்ள வேண்டியதில்லை. எடுத்துக்காட்டாக, ஜாவாவில், சேவைகளை நேரடியாக சோதிக்கும் போது மற்றும் செலுத்தும் போது பிரதிபலிப்பு தனிப்பட்ட பண்புகளை பகிரங்கப்படுத்தலாம். சார்பு ஊசி இல்லாமல் பின்வரும் ஜாவா எடுத்துக்காட்டில், கிளையன்ட் வகுப்பில் கட்டமைப்பாளரில் துவக்கப்பட்ட ஒரு சேவை உறுப்பினர் மாறி உள்ளது. வாடிக்கையாளர் நேரடியாக எந்த சேவையைப் பயன்படுத்துகிறார் என்பதை உருவாக்கி கட்டுப்படுத்துகிறார், இது ஒரு கடினமான குறியீட்டு சார்புநிலையை உருவாக்குகிறது. பொது வகுப்பு கிளையன்ட் {தனியார் சேவை சேவை; கிளையன்ட் () {// சார்பு கடின குறியீடாக உள்ளது. this.service = புதிய எடுத்துக்காட்டு சேவை ();}} கட்டமைப்பாளர் ஊசி சார்பு ஊசியின் மிகவும் பொதுவான வடிவம் ஒரு வர்க்கம் அதன் கட்டமைப்பாளர் மூலம் அதன் சார்புகளைக் கோருவதாகும். வாடிக்கையாளர் எப்போதும் செல்லுபடியாகும் நிலையில் இருப்பதை இது உறுதி செய்கிறது, ஏனெனில் அதன் தேவையான சார்புகள் இல்லாமல் அதை உடனடியாக உறுதிப்படுத்த முடியாது. பொது வகுப்பு கிளையன்ட் {தனியார் சேவை சேவை;// சார்பு ஒரு கட்டமைப்பாளர் மூலம் செலுத்தப்படுகிறது. கிளையன்ட் (சேவை சேவை) {என்றால் (சேவை = = பூஜ்யம்) {புதிய சட்டவிரோத வாதம் விதிவிலக்கு ("சேவை பூஜ்யமாக இருக்கக்கூடாது");} this.service = சேவை;} செட்டர் ஊசி ஒரு கட்டமைப்பாளரை விட ஒரு செட்டர் முறை மூலம் சார்புநிலைகளை ஏற்றுக்கொள்வதன் மூலம், வாடிக்கையாளர்கள் எந்த நேரத்திலும் தங்கள் சார்புநிலைகளை கையாள ஊசி ஊசிகளை அனுமதிக்கலாம். இது நெகிழ்வுத்தன்மையை வழங்குகிறது, ஆனால் வாடிக்கையாளர் பயன்படுத்தப்படுவதற்கு முன்பு அனைத்து சார்புகளும் உட்செலுத்தப்பட்டு செல்லுபடியாகும் என்பதை உறுதிப்படுத்துவது கடினம். பொது வகுப்பு கிளையன்ட் {தனியார் சேவை சேவை;// சார்பு ஒரு செட்டர் முறை மூலம் செலுத்தப்படுகிறது. பொது வெற்றிட செட் சர்வீஸ் (சேவை சேவை) {என்றால் (சேவை = = பூஜ்யம்) {புதிய சட்டவிரோத வாதம் விதிவிலக்கு ("சேவை பூஜ்யமாக இருக்கக்கூடாது");} this.service = சேவை;} இடைமுக ஊசி இடைமுக ஊசி மூலம், சார்புநிலைகள் தங்கள் வாடிக்கையாளர்களைப் பற்றி முற்றிலும் அறியாதவை, இருப்பினும் புதிய வாடிக்கையாளர்களைப் பற்றிய குறிப்புகளை அனுப்புகின்றன மற்றும் பெறுகின்றன. இந்த வழியில், சார்புநிலைகள் உட்செலுத்திகளாக மாறுகின்றன. முக்கியமானது என்னவென்றால், உட்செலுத்தும் முறை ஒரு இடைமுகத்தின் மூலம் வழங்கப்படுகிறது. வாடிக்கையாளர் மற்றும் அதன் சார்புகளை அறிமுகப்படுத்த ஒரு அசெம்ப்ளர் இன்னும் தேவைப்படுகிறது. அசெம்ப்ளர் வாடிக்கையாளரைப் பற்றிய குறிப்பை எடுத்து, அந்த சார்புநிலையை அமைக்கும் செட்டர் இடைமுகத்திற்கு அதை அனுப்புகிறார், மேலும் அதை அந்த சார்பு பொருளுக்கு அனுப்புகிறார், இது வாடிக்கையாளருக்கு ஒரு குறிப்பை அனுப்புகிறது. இடைமுக ஊசி மதிப்பு வேண்டும் என்றால், சார்பு வெறுமனே தன்னை ஒரு குறிப்பு அனுப்பும் கூடுதலாக ஏதாவது செய்ய வேண்டும். இது மற்ற சார்புகளைத் தீர்க்க ஒரு தொழிற்சாலை அல்லது துணை அசெம்பிளராக செயல்படக்கூடும், இதனால் முக்கிய அசெம்பிளரிடமிருந்து சில விவரங்களை சுருக்குகிறது. இது குறிப்பு-எண்ணிக்கையாக இருக்கலாம், இதனால் எத்தனை வாடிக்கையாளர்கள் அதைப் பயன்படுத்துகிறார்கள் என்பது சார்பு நிறுவனத்திற்குத் தெரியும். சார்பு வாடிக்கையாளர்களின் தொகுப்பை பராமரித்தால், அது பின்னர் அவர்கள் அனைவரையும் ஒரு வித்தியாசமான நிகழ்வுடன் செலுத்தலாம். பொது இடைமுக சேவை செட்டர் {வெற்றிட செட் சர்வீஸ் (சேவை);} பொது வகுப்பு கிளையன்ட் சேவை செட்டரை செயல்படுத்துகிறது {தனியார் சேவை சேவை; @Override பொது வெற்றிட செட் சர்வீஸ் (சேவை சேவை) {என்றால் (சேவை = பூஜ்யம்) {புதிய சட்டவிரோத வாதம் விதிவிலக்கு ("சேவை பூஜ்யமாக இருக்கக்கூடாது");} this.service = சேவை;} பொது வகுப்பு சேவை இன்ஜெக்டர் {தனியார் இறுதி செட் <சர்வீஸ் செட்டர்> கிளையண்ட்கள் = புதிய ஹாஷ்செட் <> (); பொது வெற்றிட உட்செலுத்துதல் (சர்வீஸ் செட்டர் கிளையன்ட்) {this.clients.add (கிளையன்ட்); client.setService (புதிய எடுத்துக்காட்டு சேவை ();} பொது வெற்றிட சுவிட்ச் () பப்ளிக் கிளாஸ் புரோகிராம் {பப்ளிக் ஸ்டேடிக் வாயிட் மெயின் (ஸ்ட்ரிங் [] ஆர்க்ஸ்) {// சேவையை உருவாக்குங்கள். சேவை சேவை = புதிய எடுத்துக்காட்டு சேவை ();// சேவையை வாடிக்கையாளருக்குள் செலுத்தவும். கிளையன்ட் கிளையன்ட் = புதிய கிளையன்ட் (சேவை);// பொருட்களைப் பயன்படுத்தவும். கையேடு கட்டுமானம் மிகவும் சிக்கலானதாக இருக்கலாம் மற்றும் பில்டர்கள், தொழிற்சாலைகள் அல்லது பிற கட்டுமான வடிவங்களை உள்ளடக்கியதாக இருக்கலாம். கட்டமைப்புகள் கையேடு சார்பு ஊசி பெரும்பாலும் கடினமானது மற்றும் பெரிய திட்டங்களுக்கு பிழை ஏற்படக்கூடியது, இது செயல்முறையை தானியக்கமாக்கும் கட்டமைப்புகளின் பயன்பாட்டை ஊக்குவிக்கிறது. கட்டுமானக் குறியீடு பயன்பாட்டிற்கு இனி தனிப்பயனாக்கப்படாமல், அதற்கு பதிலாக உலகளாவியதாக இருக்கும்போது கையேடு சார்பு ஊசி ஒரு சார்பு ஊசி கட்டமைப்பாக மாறுகிறது. பயனுள்ளதாக இருக்கும்போது, சார்பு ஊசி போடுவதற்கு இந்த கருவிகள் தேவையில்லை. ஸ்பிரிங் போன்ற சில கட்டமைப்புகள், நிரல் கலவையைத் திட்டமிட வெளிப்புற உள்ளமைவு கோப்புகளைப் பயன்படுத்தலாம்ஃ இறக்குமதி org.springframework.beans.factory.BeanFactory; இறக்குமதி org.springframework.context.ApplicationContext; இறக்குமதி org.springframework.context.support.ClassPathXmlApplicationContext; பொது வகுப்பு ஊசி {பொது நிலையான வெற்றிட பிரதான (சரம் [] args) {// எந்த கான்கிரீட் சேவையைப் பயன்படுத்துவது என்பது பற்றிய விவரங்கள் நிரலில் இருந்து தனித்தனியாக உள்ளமைவில் சேமிக்கப்படுகின்றன. பீன்ஃபாக்டரி பீன்ஃபாக்டரி = புதிய கிளாஸ்பாத்எக்ஸ்எம்எல் அப்ளிகேஷன் சூழல் ("Beans.xml"); கிளையன்ட் கிளையன்ட் = (கிளையன்ட்) beanfactory.getBean ("கிளையன்ட்"); System.out.println (client.greet ();}} சாத்தியமான நீண்ட மற்றும் சிக்கலான பொருள் வரைபடத்துடன் கூட, குறியீட்டில் குறிப்பிடப்பட்டுள்ள ஒரே வகுப்பு நுழைவு புள்ளியாகும், இந்த விஷயத்தில் Client.Client வசந்தத்துடன் வேலை செய்ய எந்த மாற்றங்களுக்கும் ஆளாகவில்லை மற்றும் ஒரு போஜோவாக உள்ளது. வசந்த-குறிப்பிட்ட சிறுகுறிப்புகள் மற்றும் அழைப்புகள் பல வர்க்கங்களிடையே பரவாமல் இருப்பதன் மூலம், அமைப்பு வசந்தத்தை மட்டுமே தளர்வாக சார்ந்துள்ளது. எடுத்துக்காட்டுகள் AngularJS பின்வரும் எடுத்துக்காட்டு ஒரு AngularJS கூறு சார்பு ஊசி மூலம் வாழ்த்து சேவையைப் பெறுவதைக் காட்டுகிறது. செயல்பாடு சில வகுப்பு (வாழ்த்து) {this.greeter = வாழ்த்து;} SomeClass.prototype.doSomething = செயல்பாடு (பெயர்) {this.greeter.greet (பெயர்);} ஒவ்வொரு AngularJS பயன்பாடும் சார்புநிலைகளை உருவாக்குவதற்கும் தேடுவதற்கும் பொறுப்பான ஒரு சேவை இருப்பிடத்தைக் கொண்டுள்ளது. //ஒரு தொகுதியில் வயரிங் தகவலை வழங்கவும் வர் மை மாடுல் = angular.module ('மை மாடுல்', []);// ஒரு வாழ்த்து சேவையை எவ்வாறு உருவாக்குவது என்பதை உட்செலுத்துபவருக்குக் கற்பிக்கவும். //வாழ்த்து தெரிவிப்பவர் $சாளர சேவையை சார்ந்துள்ளார். myModule.factory ('வாழ்த்து', செயல்பாடு ($சாளரம்) {திரும்பும் {வாழ்த்துஃ செயல்பாடு (உரை) {$window.alert (உரை);}};}); பின்னர் வாழ்த்து சேவை உட்பட மை மாட்யூல் தொகுதியில் வரையறுக்கப்பட்ட கூறுகளை வழங்கும் ஒரு புதிய உட்செலுத்தியை நாம் உருவாக்கலாம். வர் இன்ஜெக்டர் = angular.injector (['மை மாடுல்', 'ng']); வர் வாழ்த்து = injector.get ('வாழ்த்து'); சர்வீஸ் லொக்கேட்டர் ஆன்டிபேட்டர்னைத் தவிர்க்க, ஆங்குலர்ஜேஎஸ் எச். டி. எம். எல் வார்ப்புருக்களில் அறிவிப்பு குறியீட்டை அனுமதிக்கிறது, இது உட்செலுத்திக்கு கூறுகளை உருவாக்குகிறது. <டிவ் என்ஜி-கன்ட்ரோலர் = "மை கன்ட்ரோலர்"> <பொத்தான் என்ஜி-கிளிக் = "ஸே ஹலோ ()"> ஹலோ </பொத்தான்> </டிவ்> செயல்பாடு மை கன்ட்ரோலர் ($ஸ்கோப், வாழ்த்து) {$scope.sayHello = செயல்பாடு () {greeter.greet ('ஹலோ வேர்ல்ட்');};} என்ஜி-கன்ட்ரோலர் உத்தரவு இன்ஜெக்டரைத் தூண்டுகிறது கட்டுப்படுத்தி மற்றும் அதன் சார்புகளின் ஒரு நிகழ்வை உருவாக்க. சி #இந்த மாதிரி சி #இல் கட்டமைப்பாளர் ஊசி ஒரு உதாரணம் வழங்குகிறது. கணினியைப் பயன்படுத்துதல்; பெயர்வெளி சார்பு உட்செலுத்துதல்;// எங்கள் வாடிக்கையாளருக்கு இந்த இடைமுகத்தைப் பற்றி மட்டுமே தெரியும், அது எந்த குறிப்பிட்ட கேம்பேட்டைப் பயன்படுத்துகிறது என்பது அல்ல. இடைமுகம் ஐஜாமேபேட் செயல்பாடு {சரம் கெட்ஜாமேபேட் பெயர் (); வெற்றிட செட் வைப்ரேஷன் பவர் (மிதவை சக்தி);}// பின்வரும் சேவைகள் மேலே உள்ள இடைமுகத்தின் உறுதியான செயல்பாடுகளை வழங்குகின்றன. கிளாஸ் எக்ஸ்பாக்ஸ் கேம்பேட்ஃ ஐஜாபேட் செயல்பாடு {மிதவை அதிர்வு சக்தி = 1.0f; பொது சரம் கெட் கேம்பேட் பெயர் () => "எக்ஸ்பாக்ஸ் கட்டுப்படுத்தி"; பொது வெற்றிட செட்விபிரேஷன் சக்தி (மிதவை சக்தி) => this.vibrationPower = Math.Clamp (சக்தி, 0.0f, 1.0f);} கிளாஸ் பிளேஸ்டேஷன் ஜாய்ஸ்டிக்ஃ ஐஜாபேட் செயல்பாடு {மிதவை அதிர்வு சக்தி = 100.0f; பொது சரம் கெட் கேம்பேட் பெயர் () => "பிளேஸ்டேஷன் கட்டுப்படுத்தி"; பொது வெற்றிட செட்விபிரேஷன் சக்தி (மிதவை சக்தி) => this.vibratingPower = Math.Clamp (சக்தி * 100.0f, 0.0f, 100.0f) கிளாஸ் கேம்பேட் {ஐஜாமேபேட் செயல்பாட்டு கேம்பேட் செயல்பாடு;// சேவை கட்டமைப்பாளர் மூலம் செலுத்தப்பட்டு மேலே உள்ள புலத்தில் சேமிக்கப்படுகிறது. பொது கேம்பேட் (ஐஜிஏம்பேட் செயல்பாட்டு கேம்பேட் செயல்பாட்டு) => this.gamepadFunctionality = கேம்பேட் செயல்பாட்டு; பொது வெற்றிட காட்சி பெட்டி () {// உட்செலுத்தப்பட்ட சேவை பயன்படுத்தப்படுகிறது. வார கேம்பேட் பெயர் = this.gamepadFunctionality.GetGamepadName (); வார செய்தி = $"நாங்கள் இப்போது {கேம்பேட் பெயர்} ஐப் பயன்படுத்துகிறோம், நீங்கள் அதிர்வுறும் சக்தியை மாற்ற விரும்புகிறீர்களா? "; Console.WriteLine (செய்தி);} வகுப்பு நிரல் {நிலையான வெற்றிட மெயின் () {வர் ஸ்டீம் கண்ட்ரோலர் = புதிய ஸ்டீம் கண்ட்ரோலர் ();// நாம் ஒரு எக்ஸ்பாக்ஸ்கண்ட்ரோலர், பிளேஸ்டேஷன் ஜாய்ஸ்டிக் போன்றவற்றிலும் தேர்ச்சி பெற்றிருக்கலாம். //கேம்பேட் எதைப் பயன்படுத்துகிறது மற்றும் தேவையில்லை என்று தெரியவில்லை. வார் கேம்பேட் = புதிய கேம்பேட் (ஸ்டீம் கண்ட்ரோலர்); gamepad.Showcase ();} கட்டிடக்கலை விளக்க மொழியையும் பார்க்கவும் கட்டுப்பாட்டின் தொழிற்சாலை முறை தலைகீழ் பிளக்-இன் (கம்ப்யூட்டிங்) மூலோபாயம் மூலோபாயம் மூலோபாயம் மூலோபாயம் மூலோபாயம் மூலோபாயம் மூலோபாயம் மூலோபாயம் மூலோபாய அமைப்பு கோண ஜேஎஸ் சேவை இருப்பிட முறை அளவுரு (கணினி நிரலாக்கம்) குவாஜெக்ட் குறிப்புகள் வெளிப்புற இணைப்புகள் மார்க் சீமானின் கலவை வேர் ஒரு தொடக்க வழிகாட்டி சார்பு ஊசி சார்பு ஊசி மற்றும் சோதனை செய்யக்கூடிய பொருள்கள்ஃ தளர்வாக இணைக்கப்பட்ட மற்றும் சோதனை செய்யக்கூடிய பொருட்களை வடிவமைத்தல்-ஜெர்மி வெய்ஸ்கோட்டன்; டாக்டர் டோப் ஜர்னல், மே 2006. வடிவமைப்பு முறைகள்ஃ சார்பு ஊசி-எம்எஸ்டிஎன் இதழ், செப்டம்பர் 2005 மார்ட்டின் ஃபோலரின் அசல் கட்டுரை ஈஏஏவின் சார்பு ஊசி பி என்ற வார்த்தையை அறிமுகப்படுத்தியதுஃ சார்பு ஊசிக்கு பின்னால் உள்ள பணக்கார பொறியியல் பாரம்பரியத்தை சொருகி-ஆண்ட்ரூ மெக்வீ-சார்பு ஊசியின் விரிவான வரலாறு. சார்பு ஊசி என்றால் என்ன? - ஒரு மாற்று விளக்கம்-ஜேக்கோப் ஜென்கோவ் சார்பு உட்செலுத்துதலுடன் அதிக சோதனைக்குரிய குறியீட்டை எழுதுகிறார்-- Developer.com, அக்டோபர் 2006 நிர்வகிக்கப்பட்ட விரிவாக்க கட்டமைப்பின் கண்ணோட்டம்-- ஹன்ட் 1998 ரிஃபாக்டர் மூலம் சார்பு பொறிமுறையின் பழைய பாணியிலான விளக்கம் சார்பு உட்செலுத்துதல் கொள்கலனுக்கான உங்கள் வழி பிஎச்பியில் டிஐ புரிந்துகொள்வது உங்களுக்கு சார்பு உட்செலுத்துதல் கொள்கலன் கூறு அடிப்படையிலான மென்பொருள் பொறியியல் மென்பொருள் கட்டமைப்பு மென்பொருள் வடிவமைப்பு வடிவங்கள் தேவையில்லை எடுத்துக்காட்டாக ஜாவா குறியீடு கொண்ட கட்டுரைகள்