8-modul · 1-dars: IoC · DI · Bean
Daraja: Ilg'or
IoC · DI · Bean. Spring Framework bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi IoC · DI · Bean tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Spring obyekt yaratish, ularning bog'lanishi, tranzaksiya va web infratuzilmasini bir xil usulda boshqarishga yordam beradi. Core/Beans/Context, AOP, JDBC/Transaction va Web/MVC modullari muammolarni ajratadi. Jakarta EE yomon degan hukm emas: Spring tanlovi konfiguratsiya, ekotizim va loyiha ehtiyojiga bog'liq. IoC boshqaruvni frameworkka berish; DI obyektga kerakli hamkorni tashqaridan uzatishdir. Constructor injection majburiy dependencylarni aniq qiladi, setter injection ixtiyoriy sozlashga mos. Spring boshqaradigan obyekt bean deyiladi. @ComponentScan componentlarni topadi, @Configuration ichidagi @Bean metodlari explicit konfiguratsiya beradi. XML orqali ham bean e'lon qilish mumkin. @Autowired tur bo'yicha tanlaydi, @Qualifier bir nechta nomzodni ajratadi; Jakarta @Inject/@Named ham mos muhitda ishlatiladi. Conditional bean shart bajarilganda yaratiladi; @PropertySource konfiguratsiya manbasini qo'shadi. init-method yaratishdan keyin, destroy-method container yopilishida ishlaydi. Konstruktor ichida tarmoq chaqirib startupni qotirish o'rniga lifecycle va timeoutni boshqaring.
## 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.stereotype.Service
class StudyService {
private final StudyRepository repository;
StudyService(StudyRepository repository) { this.repository = repository; }
}
// StudyRepository uchun bean ham e'lon qilingan bo'lishi kerak.
Keng tarqalgan xatolar
- new StudyService(...) bilan o'zingiz yaratgan obyektga Spring proxy va lifecycle avtomatik qo'llanmaydi.
Mashqlar
- Bitta interface uchun ikkita bean yarating; @Qualifier bilan qaysi biri kirishini test qiling.
- Bitta service ni new bilan va Spring bean sifatida chaqirib, @Transactional ishlashini solishtiring.
Teglar: pdp, nazariya, modul-08