1. Bean Definition Xml and java based configurations
dependency > < groupId
Download 68.14 Kb. Pdf ko'rish
|
5-Bean Definition, Dependency Injection
dependency
> < groupId >javax.inject groupId > < artifactId >javax.inject artifactId > < version >1 version > 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! Download 68.14 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling