..
Користите Конструктор зависности ињецтион може да доведе до стварања цикличног зависности између пасуљ. На пример, ако одлазни предмет заглавља морају бити инстанце да се објекат Б, али у исто време објекат објекат Б потреба, ствара зависност која се не може решити коришћењем Конструктор зависности убризгавања.
У таквим случајевима морате користити сетер Зависност убризгавања је веома сличан конструктор, али разлика је у чињеници да се убризгава зависности након што је објекат био инстанце. Ево једног примера:
{Публиц цласс Беан2
Приватна ГенерицСервице генерицСервице;
публиц воид сетГенерицСервице (ГенерицСервице генерицСервице) {
тхис.генерицСервице = генерицСервице;
}
јавне ГенерицСервице гетГенерицСервице () {
генерицСервице повратак;
}
/ **
* Пословна логика .............
* /
}
нелл'апплицатионЦонтект. кмл
<беан ид="сеттерБеан" цласс="ит.мрвебмастер.ди.сеттер.Беан2"> <проперти наме="генерицСервице" реф="генерицСервице" /> </ Бин>
Поред решавања проблема кружног дипензе убризгавања сетер зависности може се реконфигурисати у рунтиме пасуљ, из тих разлога препоручљиво је да то Конструктор. Неке школе мишљења, међутим, кажу да би добро да се користи ентрабе: конструктор за потребне зависности и креатори за оне опције. Препоручљиво је да користите сетер, јер је веома ретко да постоје опционе зависности.
Поред основне употребе ДИ, постоје и друге могућности које нуди пролеће, као што су празне стрингове, или можете убризгати нулл поља:
<- Вредност Нулл 1 -> <беан ид="нуллБеан1" цласс="ит.мрвебмастер.ди.цонструцтор.беан" фацтори-метход="цреатеБеан"> <цонструцтор-арг типе="јава.ланг.Интегер" валуе="0" /> <цонструцтор-арг типе="јава.ланг.Стринг" валуе="" /> <цонструцтор-арг типе="ит.мрвебмастер.ди.цонструцтор.ГенерицСервице"> <нулл/> </ конструктор-Арг> </ Бин> <- 2 ВРЕДНОСТ НУЛЛ -> <беан ид="нуллБеан2" цласс="ит.мрвебмастер.ди.сеттер.Беан2"> <проперти наме="генерицСервице"> <нулл/> </ имовине> </ Бин>
Пролеће такође нуди колекцију листе управљања типа, сет, Карта, Својства, а кроз таг листе, скуп, мапа, и реквизите:
{Публиц цласс ЦоллецтионБеан
Листа личних <ГенерицСервице> беанЛист;
Приватне својине беанПропс;
Приватна <стринг> беанСет септембра;
приватне Карта <Интегер, стринг> беанМап;
/ **
* Пословна логика ......................
* /
<ГенерицСервице> ГетБеанЛист јавни листа () {
беанЛист повратак;
}
јавна карта <Интегер, стринг> гетБеанМап () {
беанМап повратак;
}
Јавна имовина гетБеанПропс () {
беанПропс повратак;
}
<стринг> ГетБеанСет јавни Постави () {
беанСет повратак;
}
публиц воид сетБеанЛист (Листа <ГенерицСервице> беанЛист) {
тхис.беанЛист = беанЛист;
}
публиц воид сетБеанМап (Мапа <Интегер, стринг> беанМап) {
тхис.беанМап = беанМап;
}
публиц воид сетБеанПропс (Својства беанПропс) {
тхис.беанПропс = беанПропс;
}
публиц воид сетБеанСет (Постави <стринг> беанСет) {
тхис.беанСет = беанСет;
}
}
нелл'апплицатионЦонтект. кмл
<- БЕАН КОЛЕКЦИЈА ->
<беан ид="цоллецтионБеан" цласс="ит.мрвебмастер.ди.цоллецтион.ЦоллецтионБеан">
<- ЛИСТА ->
<проперти наме="беанЛист">
<лист>
<реф беан="генерицСервице"/>
</ Списак>
</ Некретнине>
<- Пропертиес ->
<проперти наме="беанПропс">
<пропс>
<проп кеи="проп1"> вредност1 </ реквизит>
<проп кеи="проп2"> вредност2 </ реквизит>
<проп кеи="проп3"> валуе3 </ реквизит>
</ Реквизити>
</ Некретнине>
<- СЕТ ->
<проперти наме="беанСет">
<Подеси>
<валуе> до </ вредност>
<валуе> Б </ вредност>
</ Подесити>
</ Некретнине>
<- МАП ->
<проперти наме="беанМап">
<мап>
<ентри кеи="1" валуе="валуе1" />
</ Карта>
</ Некретнине>
</ Бин>
То оставља читаоца са дубине ио другим питањима као што су прикупљање стапања, унутрашњи пасуљ и сарадника.
| |
Линук (курс)
Комплетан водич за опен-соурце систем. Од 49 €. |
| |
ПХП (курс)
Цео курс за креирање динамичких веб сајтова. Од 49 €. |
| |
Руби и Руби он Раилс (курс)
Израду софтвера и веб апликација са рубином и РОР. Од 39 €. |