8-modul · 2-dars: Context · Scope · SpEL

Daraja: Ilg'or

Context · Scope · SpEL. Spring Framework bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Context · Scope · SpEL tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya BeanFactory dependency yaratish va bog'lashning asosiy shartnomasidir. ApplicationContext bunga event, resource va message/i18n imkoniyatlarini qo'shadi. Singleton Springda har bean definition va container uchun bitta instance; butun JVM uchun majburiy bitta emas. Prototype har so'ralganda yangisini yaratadi, ammo singleton ichiga bir marta inject qilinsa yangi instance har chaqiruvda kelmaydi. Lazy bean birinchi talabda yaratiladi; eager singleton startupda xatoni ertaroq ochadi. Request va session scopelar web contextga bog'liq. Constructor dependencylar aylana hosil qilsa yaratish muammosi chiqadi: mas'uliyatni ajratish odatda eng to'g'ri yechim, lazy bilan yashirish emas. @PostConstruct initdan keyingi ish, @PreDestroy boshqariladigan yopilish uchun. @Value sodda qiymat inject qiladi; ${...} property placeholder, #{...} SpEL ifodasidir. SpEL propertyga kirish, operatorlar va bean reference bilan ishlaydi; OGNL/MVEL boshqa expression tillari. Foydalanuvchi yuborgan ifodani baholash xavfli. Murakkab konfiguratsiyani type-safe @ConfigurationPropertiesga ajrating va startupda validate qiling.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/8-module%28Spring%20Introduction%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-framework/reference/)

Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.

Kod misoli

@org.springframework.context.annotation.Bean
@org.springframework.context.annotation.Scope("prototype")
StringBuilder buffer() { return new StringBuilder(); }
// Har safar yangisi kerak bo'lsa ObjectProvider<StringBuilder> orqali getObject().

Keng tarqalgan xatolar

Mashqlar

Teglar: nazariya, pdp, modul-08

Interaktiv ko'rinish (viktorina, izohlar, tarix)