..
Naudokite Konstruktorius dependency injection gali sukelti ciklinių priklausomybių tarp pupelių kūrimas. Pavyzdžiui, jeigu iš darbo išeinantis objektas antraštes reikia instantiated į objektą B, tačiau tuo pačiu metu objektas objekto B poreikius, sukuria priklausomybę, kuri negali būti išspręsta naudojant Konstruktorius dependency injection.
Tokiais atvejais jums reikia naudoti seteris dependency injection yra labai panašus į Konstruktorius tačiau skirtumas yra tai, kad priklausomybės yra švirkščiamas po objektas buvo instantiated. Štai pavyzdys:
{Visuomenės klasė Bean2
Asmeninis GenericService genericService;
public void setGenericService (GenericService genericService) {
this.genericService = genericService;
}
visuomenės GenericService getGenericService () {
genericService grįžti;
}
/ **
* Verslo logika .............
* /
}
nell'applicationContext. XML
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService" ref="genericService" /> </ Bean>
Be to, sprendžiant apskrito dipenze seteris dependency injection problema taip pat gali būti pertvarkoma vykdymo metu pupelės, dėl šių priežasčių ji yra linkusi Konstruktorius. Kai kurie manė, mokyklų, tačiau, sako, kad gera būtų naudoti entrabe: Konstruktorius būtinos priklausomybių ir derintojai tiems galimybes. Patartina naudoti seteris, nes ji yra labai reta, kad yra neprivalomas priklausomybes.
Be pagrindinio naudojimo DI, yra ir kitų funkcijų, kad pavasarį siūlo, kaip antai tuščias eilutes, arba galite švirkšti null srityse:
<- Neapibrėžta reikšmė 1 -> <bean id="nullBean1" class="it.mrwebmaster.di.constructor.bean" factory-method="createBean"> <constructor-arg type="java.lang.Integer" value="0" /> <constructor-arg type="java.lang.String" value="" /> <constructor-arg type="it.mrwebmaster.di.constructor.GenericService"> <null/> </ konstruktorius-ARG> </ Bean> <- 2 vertė null -> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService"> <null/> </ nuosavybės> </ Bean>
Pavasario taip pat siūlo valdymo tipas Sąrašas kolekcijos, Set, struktūra, savybės, ir per tegus sąrašą, nustatyti, žemėlapį ir rekvizitai:
{Visuomenės klasė CollectionBean
asmeninįpranešimą sąrašas <GenericService> beanList;
Asmeninis savybės beanProps;
Asmeninis <String> beanSet d.;
asmeninįpranešimą Žemėlapis <Integer, string> beanMap;
/ **
* Verslo logika ......................
* /
<GenericService> GetBeanList viešojo sąrašas () {
beanList grįžti;
}
visuomenės Žemėlapis <Integer, string> getBeanMap () {
beanMap grįžti;
}
Visuomenės savybės getBeanProps () {
beanProps grįžti;
}
<String> GetBeanSet visuomenės Nustatyti () {
beanSet grįžti;
}
public void setBeanList (sąrašas <GenericService> beanList) {
this.beanList = beanList;
}
public void setBeanMap (Žemėlapis <Integer, string> beanMap) {
this.beanMap = beanMap;
}
public void setBeanProps (Ypatybės beanProps) {
this.beanProps = beanProps;
}
public void setBeanSet (Nustatyti <String> beanSet) {
this.beanSet = beanSet;
}
}
nell'applicationContext. XML
<- Pupelių RINKIMAS ->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<-! SĄRAŠAS ->
<property name="beanList">
<list>
<ref bean="genericService"/>
</ Sąrašas>
</ Nekilnojamas turtas>
<- Properties ->
<property name="beanProps">
<props>
<prop key="prop1"> reikšmė1 </ pasiūlymo>
<prop key="prop2"> reikšmė2 </ pasiūlymo>
<prop key="prop3"> value3 </ pasiūlymo>
</ Props>
</ Nekilnojamas turtas>
<- SET ->
<property name="beanSet">
<set>
<value> iki </ vertė>
<value> b </ vertė>
</ Nustatyti>
</ Nekilnojamas turtas>
<- MAP ->
<property name="beanMap">
<map>
<entry key="1" value="value1" />
</ Map>
</ Nekilnojamas turtas>
</ Bean>
Jis palieka skaitytoją su kitais klausimais, pavyzdžiui, sujungti surinkimo, vidinis pupelės ir bendradarbių gylio.
| |
"Linux" (kurso)
Užbaigti vadovą, kad atviro kodo sistema. Nuo 49 €. |
| |
PHP (kurso)
Visas kursas sukurti dinaminius interneto svetainių. Nuo 49 €. |
| |
Ruby ir Ruby on Rails (kurso)
Sukurti programinę įrangą ir interneto programų su Ruby ir RoR. Nuo 39 €. |