..


Rėmėjų nuorodos

Pagrindiniai konteinerių - Konstruktorius dependency injection

Dabar pažiūrėkime, pavyzdį, kaip naudoti Konstruktorius dependency injection
Mes sukursime savo pupelių, kad priklauso nuo bendrųjų paslaugų:






 it.mrwebmaster.di.constructor paketą;









 visuomenės klasė pupelių {





  



 Asmeninis GenericService genericService;



	

  



 asmeninįpranešimą Styginių beanName;





  



 / **



   



 * Gamintojas



   



 * @ Param genericService



   



 * @ Param beanName



   



 * /



  



 visuomenės pupelių (GenericService genericService, styginių beanName) {



    



 super ();



    



 this.genericService = genericService;



    



 this.beanName = beanName;



  



 }



	

  



 / **



   



 * Visuomenės metodas



   



 * /



  



 public void DOIT () {



    



 System.out.println (beanName + "kažką");



    



 genericService.dosomething ();



  



 }



	





 }



konfigūruoti priklausomybę nell'applicationContext. XML





 <bean id="genericService" class="it.mrwebmaster.di.constructor.GenericServiceImpl" scope="singleton" />









 <bean id="constructorBean" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg value="beanName"/>



  



 <constructor-arg ref="genericService"/>







 </ Bean>



Kaip galima matyti iš, pavyzdžiui naudotis Konstruktorius dependency injection turi naudoti tegus-ARG konstruktorius naudojant ref arba vertės požymius. Nuoroda Attibassi reikia praeiti kaip ARG jau instantiated nell'IoC kitą pupelių konteineris, tuo tarpu vertė atributas naudojamas perduoti numatytosios vertės, kaip stygos arba numerius.

Šiame pavyzdyje klasės konstruktorius priima kaip pirkimo GenericService pupelės ir styginių, bet Pavyzdžiui, jis norėjo pakeisti argumentų, siekiant parodyti, kaip pavasario derinant argumentus, jų tipą.
Toks elgesys tipas yra gerai, kai visi argumentai yra įvairių tipų, bet kaip mes nurodyti, kad, jei argumentai yra tos pačios rūšies? Tegus-ARG konstruktorius numato indeksą atributą, kuris nurodo pavasarį tvarka, su kuria perduoti parametrus.






 <bean id="constructorBean" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg value="beanName" index="1" />



  



 <constructor-arg ref="genericService" index="0" />







 </ Bean>



Kitas atvejis gali būti dviprasmiški, kurioje construttore priima kaip įvesti du parametrus, kurie gali tiek būti atstovaujamos eilutę, pavyzdžiui:






 visuomenės pupelių (GenericService genericService, styginių beanName, invocationTimes sveikasis skaičius) {



  



 super ();



  



 this.genericService = genericService;



  



 this.beanName = beanName;



  



 this.invocationTimes = invocationTimes;







 }



ir nell'applicationContext. XML





 <bean id="constructorBean2" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg value="0" />



  



 <constructor-arg value="beanName" />



  



 <constructor-arg ref="genericService" />







 </ Bean>



Tokiu atveju pavasarį iš klaidų, kaip "0" gali būti arba eilutės arba numerį. Norėdami išspręsti šią problemą, naudokite indeksas arba attriburo tipo atributas panašus į šį:





 <bean id="constructorBean2" class="it.mrwebmaster.di.constructor.bean">



  



 <constructor-arg type="java.lang.Integer" value="0" />



  



 <constructor-arg value="beanName" type="java.lang.String" />



  



 <constructor-arg ref="genericService" />







 </ Bean>



Atributas konstruktorius-arg taip pat gali būti naudojama perduoti parametrus į gamyklą metodas:






 public static pupelių createBean (GenericService genericService, styginių beanName, invocationTimes sveikasis skaičius) {



  



 Pupelių b = nauji pupelių (genericService, beanName, invocationTimes);



  



 / / Ar somethig .......



  



 grįžti B;







 }



nell'applicationContext. XML





 <bean id="constructorBean3" class="it.mrwebmaster.di.constructor.bean" factory-method="createBean">



  



 <constructor-arg type="java.lang.Integer" value="0" />



  



 <constructor-arg value="beanName" type="java.lang.String" />



  



 <constructor-arg ref="genericService" />







 </ Bean>



Pavasario "Java" vadovas
E-mokymasis
"Linux" (kurso) "Linux" (kurso)
Užbaigti vadovą, kad atviro kodo sistema. Nuo 49 €.
PHP (kurso) PHP (kurso)
Visas kursas sukurti dinaminius interneto svetainių. Nuo 49 €.
Ruby ir Ruby on Rails (kurso) Ruby ir Ruby on Rails (kurso)
Sukurti programinę įrangą ir interneto programų su Ruby ir RoR. Nuo 39 €.
Rėmėjų nuorodos