1. Bean Definition Xml and java based configurations



Yüklə 70,3 Kb.
Pdf görüntüsü
səhifə3/3
tarix21.12.2023
ölçüsü70,3 Kb.
#187546
1   2   3
5-Bean Definition, Dependency Injection

NoUniqueBeanDefinitionException
ni chiqaradi
,
bu avtomatik ulanish uchun bir nechta bean
mavjudligini ko`rsatadi. Ushbu muammoning oldini olish uchun
@Qualifier
annotatsiyasidan foydalaniladi.
@Qualifier annotation


@Inject annotation
@Inject va @Autowired ikkala annotatsiya ham ilovangizda avtomatik ulanish uchun ishlatiladi.
@Inject annotatsiyasi Java 6 da joriy qilingan Java CDI ning bir qismi, @Autowired annotatsiyasi
esa Spring frameworkining bir qismidir. Ikkala izoh ham bir xil maqsadga javob beradi, shuning
uchun biz ulardan har ikkalasidan ham birdek foydalanishimiz mumkin.
@Inject
izohidan
foydalanishimiz uchun
javax.inject
kutubxonasini Gradle yoki Maven bog`liqligi sifatida e`lon
qilishimiz kerak .
<
dependency

<
groupId
>javax.injectgroupId

<
artifactId
>javax.injectartifactId
>
<
version
>1version

dependency
>
testCompile group: 'javax.inject', name: 'javax.inject', version: 
'1‘
For Maven
For Gradle


@Inject annotation

Kalit
@Inject
@Avtomatik simli
1
Basic
(asosiy)
Bu Java CDI ning bir qismidir
Bu Spring Frameworkning bir qismidir
2
Required
(majburiy)
U talab qilinadigan atributga ega 
emas
U kerakli atributga ega
3
Default 
Scope
(standart)
Avtomatik beanlarning standart 
scope Singleton
Injection beanning standart ko`lami prototip 
hisoblanadi.
4
Ambiguity
(noaniqlik)
Agar ineksiya uchun beanlarda
noaniqlik bo`lsa, kodingizga 
@Named kvalifikatori qo`shilishi 
kerak.
Agar in`eksiya uchun beanlarda noaniqlik 
bo`lsa, kodingizga @Qualifer kvalifikatori 
qo`shilishi kerak.
5
Advantage
(afzallik)
Bu Java CDI ning bir qismi, shuning 
uchun u hech qanday DI 
frameworkiga bog`liq emas. Bu 
sizning tizimingizni erkin bog`langan 
qiladi.
Bu sizning ilovangizni Spring framework bilan 
chambarchas bog`laydi. Kelajakda, agar siz 
boshqa DI ramkasiga o`tmoqchi bo`lsangiz, 
ilovangizni qayta sozlashingiz kerak.


@Named annotation
@Named va @Inject JSR 330 annotatsiyalari hisoblanadi va JSR 330 @Inject va
@Named bilan bog`liqlikni ta`minlaydi. JSR 330 @Named va @Inject izohlari
Springda
mos
ravishda
Springning
@Component
va
@Autowired
annotatsiyalarining ekvivalenti hisoblanadi. Sinf darajasida @Named bilan
izohlangan
bean
Spring
containeridagi
Spring
komponenti
sifatida
ishlaydi. @Inject autowires bean xuddi Spring @Autowired izohi kabi ishlaydi.


@Named annotation


@Lazy annotation
Spring framework default holatda dastur ishga tushganda barcha singleton beanlarni
ishga tushiradi va ularni dastur kontekstiga joylaydi. Biroq, ba`zi hollarda biz
beanlarni kerak bo`lganda yaratishimiz kerak, lekin dasturni ishga tushirish yoki
dastur
konteksini
yuklash
vaqtida
emas.
Bunga
biz
Springda
@Lazy annotatsiyasi yordamida erishishimiz mumkin.
Spring 3.0 dan boshlab , bean
dangasalik bilan ishga tushirilishi kerakligini ko`rsatadigan @Lazy izohi mavjud. Biz
@Lazy annotatsiyasidan bir necha usulda foydalanishimiz mumkin.


@Lazy annotation


@Resource annotation
Spring @Inject va @Named kabi JSR-330 izohlarini avtomatik ulash uchun qo`llab-quvvatlashdan
tashqari, Spring JSR-250 @Resource annotatsiyasi yordamida fieldlar yoki bean xususiyatini
sozlash usullaridan foydalangan holda ineksiyani ham qo`llab-quvvatlaydi. Springdagi
@Resource annotatsiyasi nom atributini oladi va default holatda Spring bu qiymatni ineksiya
qilinadigan bean nomi sifatida izohlaydi. Boshqacha qilib aytganda, u nom semantikasidan keyin
keladi. Agar @Resource annotatsiyasi bilan hech qanday nom ko`rsatilmagan bo`lsa, standart
nom field nomidan yoki setter usulidan olinadi.
Field bo`lsa, u field nomini oladi.
Setter usuli bo`lsa, u bean xususiyati nomini oladi.


Ammo @Resource annotatsiyasi bilan default holatda o`tish ham mavjud, agar u xuddi shu
nomdagi bean topmasa, u turga mos kelishga harakat qiladi. Shunday qilib, agar siz boshqa ikkita
izoh bilan @Autowired va @Inject bilan taqqoslanishini ko`rsangiz mumkin:
@Resource annotation
@Autowired and @Inject annotations
1.Matches by Type
2.Restricts by Qualifiers
3.Matches by Name
@Resource annotation in Spring
1.Matches by Name
2.Matches by Type
3.Restricts by Qualifiers (ignored if match is found by
name)


@Resource annotation


E`TIBORINGIZ UCHUN RAHMAT!

Yüklə 70,3 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin