..
Użyj Dependency Injection konstruktora może prowadzić do powstania cyklicznych zależności między fasoli. Na przykład, jeśli wychodzących nagłówki przedmiotem muszą być instancji do B obiektu, ale w tym samym czasie obiekt B obiekt potrzeb, tworzy zależność, której nie można rozwiązać za pomocą Dependency Injection Constructor.
W takich przypadkach należy użyć Dependency Injection Setter jest bardzo podobna do konstruktora, ale różnica polega na tym, że zależności są wstrzykiwane po obiektu instancji. Oto przykład:
{Public class Bean2
Prywatne genericService GenericService;
publicznych setGenericService void (GenericService genericService) {
this.genericService = genericService;
}
publicznych getGenericService GenericService () {
genericService powrotu;
}
/ **
* Logika biznesowa .............
* /
}
nell'applicationContext. xml
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService" ref="genericService" /> </ Bean>
Oprócz rozwiązania problemu z okrągłym Setter dipenze Dependency Injection może być zmieniana w czasie wykonywania, fasola, z tych powodów zaleca się konstruktor. Niektóre szkoły myśli jednak powiedzieć, że dobre byłoby wykorzystanie entrabe: Konstruktor niezbędne zależności i ustawiających dla tych opcji. Wskazane jest, aby używać setter, ponieważ jest bardzo rzadko, że nie są opcjonalne zależności.
Oprócz podstawowych korzystania z DI, są inne funkcje, które Spring oferuje, takie jak łańcuchy puste lub można wstrzyknąć null:
<- NULL wartość 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/> </ konstruktor-arg> </ Bean> <- 2 wartości NULL -> <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> <property name="genericService"> <null/> </ property> </ Bean>
Wiosna oferuje również zbiór Lista typu zarządzania, Set, mapa, Właściwości, a listę znaczników, zbiór, map i rekwizyty:
{Public class CollectionBean
prywatne listy <GenericService> beanList;
Prywatne Właściwości beanProps;
Prywatne <String> beanSet września;
prywatne Mapa <Integer, beanMap łańcuch;
/ **
* Logika biznesowa ......................
* /
<GenericService> GetBeanList publicznych Lista () {
beanList powrotu;
}
publicznej Mapa <Integer, łańcuch getBeanMap () {
beanMap powrotu;
}
Właściwości publiczne getBeanProps () {
beanProps powrotu;
}
GetBeanSet Ustaw <String> publicznych () {
beanSet powrotu;
}
publicznych setBeanList void (Lista <GenericService> beanList) {
this.beanList = beanList;
}
public void setBeanMap (Mapa łańcuch beanMap <Integer,) {
this.beanMap = beanMap;
}
publicznych setBeanProps void (Właściwości beanProps) {
this.beanProps = beanProps;
}
publicznych setBeanSet void (beanSet <String> Set) {
this.beanSet = beanSet;
}
}
nell'applicationContext. xml
<- Kolekcja BEAN ->
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
<- LISTA ->
<property name="beanList">
<lista>
<ref bean="genericService"/>
</> Lista
</ Nieruchomości>
<- NIERUCHOMOŚCI ->
<property name="beanProps">
<props>
<prop key="prop1"> value1 </ prop>
<prop key="prop2"> wartość2 </ prop>
<prop key="prop3"> wartość3 </ prop>
</ Rekwizyty>
</ Nieruchomości>
<- SET ->
<property name="beanSet">
<set>
<wartość> do </ value>
<wartość> b </ value>
</ Set>
</ Nieruchomości>
<- MAP ->
<property name="beanMap">
<map>
<entry key="1" value="value1" />
</ Map>
</ Nieruchomości>
</ Bean>
Pozostawia czytelnika z głębokością w innych kwestiach, takich jak zbiór korespondencji seryjnej, fasola wewnętrznej i współpracowników.
| |
Linux (Kurs)
Kompletny przewodnik do systemu open-source. Od 49 €. |
| |
PHP (Kurs)
Pełny kurs tworzenia dynamicznych stron internetowych. Od 49 €. |
| |
Ruby i Ruby on Rails (Kurs)
Tworzenie oprogramowania i aplikacji webowych w języku Ruby RoR. Od 39 €. |