Spring Framework. Spring Framework — bu Java platformasi uchun dastur tizimi va boshqaruv konteynerining inversiyasi. Ramkaning asosiy xususiyatlaridan har qanday Java ilovasi foydalanishi mumkin, ammo Java EE (Enterprise Edition) platformasida veb-ilovalarni yaratish uchun kengaytmalar mavjud. Garchi ramka (Framework) hech qanday maxsus dasturlash modelini yuklamasa ham, u Java hamjamiyatida Enterprise JavaBeans (EJB) modeliga qoʻshimcha sifatida mashhur boʻldi. Spring Framework ochiq manba hisoblanadi. Versiya tarixi. Birinchi versiyani Rod Jonson yozgan boʻlib, u 2002-yil oktyabr oyida oʻzining "Expert One-on-One J2EE Design and Development" kitobini nashr qilish bilan asos solgan. Ramka (Framework) birinchi marta 2003-yil iyun oyida Apache 2.0 litsenziyasi ostida chiqarilgan. Birinchi ishlab chiqarish relizi, 1.0, 2004-yil mart oyida chiqarilgan Spring 1.2.6 ramkasi 2006-yilda Jolt unumdorlik mukofoti va JAX Innovation Award mukofotiga sazovor boʻldi Spring 2.0 2006-yil oktyabr oyida, Spring 2.5 2007-yil noyabrda, Spring 3.0 2009-yil dekabrda, Spring 3.1-dekabr 2011-yilda va Spring 3.2.5 2013-yil noyabrda chiqdi Spring Framework 4.0 2013-yil dekabr oyida chiqarilgan Spring 4.0-dagi sezilarli yaxshilanishlar Java SE (Standard Edition) 8, Groovy 2, Java EE 7 va WebSocket ning baʼzi jihatlarini qoʻllab-quvvatlashni oʻz ichiga oladi. Spring Boot 1.0 2014-yil aprel oyida chiqarilgan Spring Framework 4.2.0 2015-yil 31-iyulda chiqarildi va darhol 2015-yil 01-sentabrda chiqarilgan 4.2.1 versiyasiga yangilandi U "Java 6, 7 va 8 bilan mos keladi, asosiy takomillashtirish va zamonaviy veb imkoniyatlariga eʼtibor qaratadi" . Spring Framework 4.3 2016-yil 10-iyunda chiqarilgan va 2020-yilgacha qoʻllab-quvvatlanadi U "umumiy Spring 4 tizim talablari doirasida yakuniy avlod boʻladi (Java 6+, Servlet 2.5+), [." "." "." "]" . Spring 5 Reactive Streams ga mos keladigan Reactor Core asosida qurilishi eʼlon qilindi. Spring Framework 6.0 2022-yil 16-noyabrda chiqarildi va Java 17+ bazasi va Servlet 6.0 va JPA kabi yaqinda chiqarilgan Jakarta EE 10 API-lariga eʼtibor qaratgan holda Jakarta EE 9+ (codice_1 nomlar maydonida) ga koʻchirildi. 3.1. Modullar. Spring Framework bir qator xizmatlarni taqdim etadigan bir nechta modullarni oʻz ichiga oladi: Tekshirish konteynerining inversiyasi (qaramlik kiritish). Spring Framework-ning markazida uning boshqaruv konteynerining inversiyasi (IoC) joylashgan boʻlib, u aks ettirish yordamida Java obyektlarini sozlash va boshqarishning izchil vositalarini taʼminlaydi. Konteyner muayyan obyektlarning obyekt hayotiy davrlarini boshqarish uchun javobgardir: bu obyektlarni yaratish, ularni ishga tushirish usullarini chaqirish va ularni bir-biriga ulash orqali ushbu obyektlarni sozlash. Konteyner tomonidan yaratilgan obyektlar, shuningdek, boshqariladigan obyektlar yoki fasol deb ataladi. Konteynerni XML (kengaytirilgan belgilash tili) fayllarini yuklash yoki konfiguratsiya sinflarida maxsus Java izohlarini aniqlash orqali sozlash mumkin. Ushbu maʼlumotlar manbalarida loviya yaratish uchun zarur boʻlgan maʼlumotlarni taqdim etadigan loviya taʼriflari mavjud. Obyektlarni qaramlikni qidirish yoki qaramlikni inʼektsiya qilish orqali olish mumkin. Tobelikni qidirish — bu qoʻngʻiroq qiluvchining konteyner obyektidan maʼlum bir nomli yoki maʼlum turdagi obyektni soʻrashi namunasidir. Bogʻliqlik inʼektsiyasi — konteyner konstruktorlar, xususiyatlar yoki zavod usullari orqali obyektlarni nomi bilan boshqa obyektlarga oʻtkazadigan namunadir. Koʻp hollarda Spring Frameworkning boshqa qismlaridan foydalanganda konteynerdan foydalanish shart emas, lekin undan foydalanish dasturni sozlash va sozlashni osonlashtiradi. Spring konteyneri ilovalarni sozlash uchun izchil mexanizmni taqdim etadi va kichik oʻlchamli ilovalardan tortib yirik korporativ ilovalargacha deyarli barcha Java muhitlari bilan integratsiyalashadi. Konteyner Pitchfork loyihasi orqali qisman mos keladigan EJB (Enterprise JavaBeans) 3.0 konteyneriga aylantirilishi mumkin. Biroz standartlarga mos kelmasligi uchun Spring Frameworkni tanqid qiladi. Biroq, SpringSource EJB 3 muvofiqligini asosiy maqsad sifatida koʻrmaydi va Spring Framework va konteyner yanada kuchli dasturlash modellarini yaratishga imkon beradi, deb daʼvo qiladi. Dasturchi obyektni toʻgʻridan-toʻgʻri yaratmaydi, lekin uni Spring konfiguratsiya faylida belgilash orqali uni qanday yaratish kerakligini tasvirlaydi. Xuddi shunday xizmatlar va komponentlar bevosita chaqirilmaydi; Buning oʻrniga Spring konfiguratsiya fayli qaysi xizmatlar va komponentlarni chaqirish kerakligini belgilaydi. Ushbu IoC texnik xizmat koʻrsatish va sinovdan oʻtkazish qulayligini oshirish uchun moʻljallangan. Aspektga yoʻnaltirilgan dasturlash ramkasi. Spring Framework oʻzining aspektga yoʻnaltirilgan dasturlash (AOP) tizimiga ega boʻlib, u aspektlar boʻyicha oʻzaro bogʻliq muammolarni modullashtiradi. AOPning alohida ramkasini yaratish motivatsiyasi dizayn, amalga oshirish yoki konfiguratsiyada juda murakkabliksiz asosiy AOP xususiyatlarini taʼminlash mumkin boʻlishi kerak degan ishonchdan kelib chiqadi. Spring AOP ramkasi, shuningdek, Spring konteyneridan toʻliq foydalanadi. Spring AOP ramkasi proksi-server namunasiga asoslangan va ish vaqtida sozlangan. Bu kompilyatsiya bosqichiga yoki yuklash vaqtida toʻquvga boʻlgan ehtiyojni yoʻq qiladi. Boshqa tomondan, ushlash faqat qoʻshilish nuqtasida mavjud obyektlarda umumiy usulni bajarishga imkon beradi. AspectJ ramkasi bilan solishtirganda, Spring AOP kamroq kuchli, ammo unchalik murakkab emas. Spring 1.2 konteynerdagi AspectJ aspektlarini sozlash uchun yordamni oʻz ichiga oladi. Spring 2.0 AspectJ bilan qoʻshimcha integratsiyani qoʻshdi; masalan, nuqta kesish tili qayta ishlatiladi va Spring AOP-ga asoslangan jihatlar bilan aralashtirilishi mumkin. Bundan tashqari, Spring 2.0 Spring Aspects kutubxonasini qoʻshdi, bu AspectJ-dan AspectJ kompilyatsiya qilish yoki yuklash vaqtida toʻqish orqali deklarativ tranzaktsiyalarni boshqarish va qaramlikni inʼektsiya qilish kabi umumiy Spring xususiyatlarini taklif qilish uchun foydalanadi. SpringSource, shuningdek, Spring Roo va Spring Insight kabi bahorgi boshqa loyihalarda AspectJ AOP-dan foydalanadi, Spring Security shuningdek, AspectJ-ga asoslangan aspektlar kutubxonasini taklif qiladi. Spring AOP uni Spring Framework ichidagi oʻzaro bogʻliq muammolar bilan ishlashga imkon berish uchun ishlab chiqilgan. Konteyner tomonidan yaratilgan va sozlangan har qanday obyekt Spring AOP yordamida boyitilgan boʻlishi mumkin. Spring Framework tranzaksiyalarni boshqarish, xavfsizlik, masofaviy kirish va JMX uchun Spring AOP-dan ichki foydalanadi. Ramkaning 2.0 versiyasidan boshlab, Spring AOP konfiguratsiyasiga ikkita yondashuvni taqdim etadi: Shuningdek, u optimallashtirish va qismlarga ajratish usullari orqali juda yuqori hajmli va yuqori unumdorlikdagi ommaviy ishlarni amalga oshirish imkonini beruvchi ilgʻor texnik xizmatlar va xususiyatlarni taqdim etadi. Spring Batch bir qator ishlarni bajaradi; ish koʻp bosqichlardan iborat boʻlib, har bir qadam OʻQISh-JARAYON-YOZISH vazifasidan yoki bitta operatsiya vazifasidan (vazifalar) iborat. „OʻQISH-JARAYON-YOZISH“ jarayoni quyidagi bosqichlardan iborat: resursdan maʼlumotlarni „oʻqish“ (vergul bilan ajratilgan qiymatlar (CSV), XML yoki maʼlumotlar bazasi), uni „qayta ishlash“, soʻngra boshqa resurslarga „yozish“ (CSV, XML yoki maʼlumotlar bazasi). Masalan, qadam CSV faylidan maʼlumotlarni oʻqishi, uni qayta ishlashi va maʼlumotlar bazasiga yozishi mumkin. Spring Batch CSV, XML va maʼlumotlar bazasini oʻqish/yozish uchun koʻplab sinflarni taqdim etadi. „Yagona“ operatsiya vazifasi (topshiriq) uchun bu faqat bitta vazifani bajarishni anglatadi, masalan, qadam boshlanishidan yoki tugallanishidan oldin yoki keyin resurslarni tozalash. Bosqichlarni ish sifatida ishlatish uchun bir-biriga bogʻlash mumkin. Integratsiya tizimi. Spring Integration — bu xabar almashish yoki voqealarga asoslangan arxitekturalar uchun zarur boʻlgan qayta foydalanish mumkin boʻlgan funksiyalarni taʼminlovchi korporativ ilovalar integratsiyasi uchun ramka. Spring Integration quvur va filtrga asoslangan arxitekturani qoʻllab-quvvatlaydi. Spring4Shell zaifligi. Boshqa har qanday dasturiy taʼminot boʻlagi singari, Springda ham baʼzi zaifliklar boʻlishi mumkin. Ulardan biri ()shunga oʻxshash „Spring4Shell“ deb nomlangan.