JavaRush /Kurslar /All lectures for UZ purposes /IoC-konteynerdan foydalanish

IoC-konteynerdan foydalanish

All lectures for UZ purposes
Daraja, Dars
Mavjud

ApplicationContext - bu turli xil binlar va ularning bog'liqliklarini ro'yxatga olishni qo'llab-quvvatlay oladigan ishlab chiqaruvchi interfeys. T getBean(String name, Class<T> requiredType) metodidan foydalanib, binlarning nusxalarini olish mumkin.

ApplicationContext binlarning ta'riflarini o'qish va ularga kirishni ta'minlash imkonini beradi, quyidagi misolda ko'rsatilgandek:

Java
// binlarni yaratamiz va sozlaymiz
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
// sozlangan nusxani olamiz
PetStoreService service = context.getBean("petStore", PetStoreService.class);
// sozlangan nusxadan foydalanamiz
List<String> userList = service.getUsernameList();
Kotlin
import org.springframework.beans.factory.getBean
// binlarni yaratamiz va sozlaymiz
val context = ClassPathXmlApplicationContext("services.xml", "daos.xml")
// sozlangan nusxani olamiz
val service = context.getBean<PetStoreService>("petStore")
// sozlangan nusxadan foydalanamiz
var userList = service.getUsernameList()

Groovy konfiguratsiyasidan foydalanilganda boshlang'ich yuklash juda o'xshash tarzda amalga oshiriladi. U Groovy-ni qo'llab-quvvatlaydigan kontekstning boshqa amalga oshirilishini ta'minlaydi (lekin XML-binlarning ta'riflarini ham tushunadi). Quyidagi misolda Groovy konfiguratsiyasi ko'rsatilgan:

Java
ApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
Kotlin
val context = GenericGroovyApplicationContext("services.groovy", "daos.groovy")

Eng moslashuvchan variant GenericApplicationContext ni o'qish delegatlari bilan birgalikda, masalan, XML-fayllar uchun XmlBeanDefinitionReader bilan birgalikda foydalanishdir, quyidagi misolda ko'rsatilgandek:

Java
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
context.refresh();
Kotlin
val context = GenericApplicationContext()
XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml")
context.refresh()

Shuningdek, Groovy fayllar uchun GroovyBeanDefinitionReader dan foydalanish mumkin, quyidagi misolda ko'rsatilgandek:

Java
GenericApplicationContext context = new GenericApplicationContext();
new GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy");
context.refresh();
Kotlin
val context = GenericApplicationContext()
GroovyBeanDefinitionReader(context).loadBeanDefinitions("services.groovy", "daos.groovy")
context.refresh()

Bunday o'qish delegatlarini bitta ApplicationContext da aralashtirib va birlashtirib, binlarning ta'riflarini turli konfiguratsiya manbalaridan o'qish mumkin.

Keyin getBean dan foydalanib binlarning nusxalarini olish mumkin. ApplicationContext interfeysida binlarni olish uchun bir nechta boshqa metodlar mavjud, lekin ideal tarzda, ularni hech qanday holatda ishlatmaslik kerak. Haqiqatan ham, sizning dastur kodingizda getBean() metodining chaqiruvi umuman bo'lmasligi kerak va shuning uchun u butunlay Spring API interfeyslariga bog'liq bo'lmasligi kerak. Masalan, Spring-ning veb-freymlari bilan integratsiyasi turli veb-freymlar komponentlari, masalan, kontrollerlar va JSF-binlar uchun bog'liqlikni kiritishni ta'minlaydi, bu esa avtomatik aniqlash va ulash (autowiring) annotatsiyalari kabi metama'lumotlar yordamida aniq binning bog'liqligini e'lon qilish imkonini beradi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION