..
Utilizarea de injectare Dependenţa Constructor poate duce la crearea de dependenţe ciclic între fasole. De exemplu, dacă A are o anteturile de ieşire sub rezerva trebuie să fie instantiat la un obiect B, dar în acelaşi timp, obiectul B are nevoie de a se opune, vă creaţi o dependenţă care nu pot fi rezolvate prin injectarea dependenţei Constructor.
În astfel de cazuri ar trebui să utilizaţi Injectarea Dependenţa Setterul este foarte similar cu Constructorul, dar diferenţa constă în faptul că dependenţele sunt injectate dupa ce obiectul a fost instantiat. Iată un exemplu:
public class {Bean2
Privare de GenericService genericService;
setGenericService public void (GenericService genericService) {
this.genericService = genericService;
}
getGenericService GenericService publice () {
genericService de returnare;
}
/ **
* Logica de afaceri .............
* /
}
nell'applicationContext. xml
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService" ref="genericService" /> </ Bean>
În plus faţă de rezolvarea problemei de injectare dipenze circulară Setter dependenţe, de asemenea, vă permite să reconfiguraţi de fasole la runtime, pentru aceste motive este de preferat să Constructor. Unele şcoli de gândire, cu toate acestea, spune că bine ar fi utilizarea entrabe: Constructor pentru dependenţe necesare şi Setterii pentru piese opţional. Este indicat să utilizaţi setter, deoarece este foarte rare, că există dependenţele opţionale.
În plus faţă de utilizarea de bază a de acolo sunt alte caracteristici care ofera de primăvară, de exemplu, vă puteţi injecta siruri de caractere gol sau nul domenii:
<- VALOARE NULL 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/> </ constructor-arg> </ Bean> <- VALUE NULL 2 -> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService"> <null/> </ proprietate> </ Bean>
De primăvară oferă, de asemenea, o colecţie de tip Lista de management, Set, Harta, Properties, şi prin lista de tag-ul, set, hartă, şi recuzita:
public class {CollectionBean
Lista privat <GenericService> beanList;
BeanProps privare de Proprietăţi;
Privare de <string> beanSet septembrie;
Harta privat <Integer, beanMap String>;
/ **
* Logica de afaceri ......................
* /
<GenericService> GetBeanList Lista publice () {
beanList de returnare;
}
publice <Integer, String> Harta getBeanMap () {
beanMap de returnare;
}
getBeanProps Properties publice () {
beanProps de returnare;
}
GetBeanSet <string> publice Set () {
beanSet de returnare;
}
setBeanList public void (<GenericService> beanList List) {
this.beanList = beanList;
}
void setBeanMap publice (Harta <Integer, beanMap String>) {
this.beanMap = beanMap;
}
setBeanProps public void (beanProps Properties) {
this.beanProps = beanProps;
}
setBeanSet public void (<string> beanSet Set) {
this.beanSet = beanSet;
}
}
nell'applicationContext. xml
<-! BEAN COLLECTION ->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<- LISTA ->
<property name="beanList">
<list>
<ref bean="genericService"/>
</> Listă
</ Imobiliare>
<- PROPRIETĂŢI ->
<property name="beanProps">
<props>
<prop key="prop1"> valoare1 </ a propunerii>
<prop key="prop2"> valoare2 </ a propunerii>
<prop key="prop3"> value3 </ a propunerii>
</ Recuzita>
</ Imobiliare>
<- SET ->
<property name="beanSet">
<set>
<value> a </ valoare>
<value> b </ valoare>
</ Set>
</ Imobiliare>
<- MAP ->
<property name="beanMap">
<map>
<entry key="1" value="value1" />
</ Harta>
</ Imobiliare>
</ Bean>
Aceasta lasă cititorul cu adâncimea de alte probleme, cum ar fi absorbit de colectare, fasole interior şi colaboratori.
| |
Curs Linux
Ghid complet pentru open-source de sistem. Incepand de la 49 €. |
| |
Curs PHP
Cursul completa pentru crearea de site-uri Web dinamice. Incepand de la 49 €. |
| |
Curs Ruby şi Ruby on Rails
Crearea de aplicatii software si web cu Ruby şi RoR. Incepand de la 39 €. |