Kontent qismiga oʻtish

Spring Framework

Vikipediya, erkin ensiklopediya

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

Versiya Sana Eslatmalar
0,9 2003 yil
1.0 2004 yil 24 mart Birinchi ishlab chiqalgan nashr.
2.0 2006 yil
3.0 2009 yil
4.0 2013 yil
5.0 2017 yil
6.0 2022 yil 16 Noyabr

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 [1] Spring 1.2.6 ramkasi 2006 yilda Jolt unumdorlik mukofoti va JAX Innovation Award mukofotiga sazovor bo'ldi [2] [3] 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 [4] Spring Framework 4.0 2013-yil dekabr oyida chiqarilgan [5] 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 [6]

Spring Framework 4.2.0 2015-yil 31-iyulda chiqarildi va darhol 2015-yil 01-sentabrda chiqarilgan 4.2.1 versiyasiga yangilandi [7] U "Java 6, 7 va 8 bilan mos keladi, asosiy takomillashtirish va zamonaviy veb imkoniyatlariga e'tibor qaratadi" . [8]

Spring Framework 4.3 2016 yil 10 iyunda chiqarilgan va 2020 yilgacha qo'llab-quvvatlanadi [9] U "umumiy Spring 4 tizim talablari doirasida yakuniy avlod bo'ladi (Java 6+, Servlet 2.5+), [. . . ]" . [8]

Spring 5 Reactive Streams ga mos keladigan Reactor Core[10] 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+ ( jakarta nomlar maydonida) ga koʻchirildi. 3.1. [11]

Modullar

Spring Framework bir qator xizmatlarni taqdim etadigan bir nechta modullarni o'z ichiga oladi:

  • Spring Core konteyneri: bu Springning asosiy moduli va bahor konteynerlarini (BeanFactory va ApplicationContext) taqdim etadi. [12]
  • Aspektga yo'naltirilgan dasturlash : o'zaro bog'liq muammolarni amalga oshirish imkonini beradi.
  • Autentifikatsiya va avtorizatsiya : Spring Security kichik loyihasi (formerly Acegi Security System for Spring) orqali bir qator standartlar, protokollar, vositalar va amaliyotlarni qo'llab-quvvatlaydigan sozlanishi mumkin bo'lgan xavfsizlik jarayonlari.
  • Konfiguratsiya bo'yicha konventsiya : Spring Roo modulida bahorga asoslangan korporativ ilovalar uchun tezkor dasturlarni ishlab chiqish yechimi taklif etiladi
  • Ma'lumotlarga kirish : Java ma'lumotlar bazasi ulanishi (JDBC) va ob'ekt bilan bog'liq xaritalash vositalari va NoSQL ma'lumotlar bazalari yordamida Java platformasida relyatsion ma'lumotlar bazasini boshqarish tizimlari bilan ishlash
  • Boshqaruv konteynerining inversiyasi : dastur komponentlarini konfiguratsiya qilish va Java ob'ektlarining hayot aylanishini boshqarish, asosan bog'liqlik kiritish orqali amalga oshiriladi.
  • Xabarlar: Java Message Service (JMS) orqali xabarlar navbatlaridan shaffof xabar iste'mol qilish uchun xabarlarni tinglovchi ob'ektlarini deklarativ ro'yxatga olish, standart JMS API orqali xabar yuborishni takomillashtirish
  • Model-ko'rinish-kontroller : veb-ilovalar va RESTful (vakillik holatini uzatish) veb-xizmatlarini kengaytirish va sozlash uchun ilgaklar bilan ta'minlovchi HTTP va servletga asoslangan ramka.
  • Masofaviy kirish tizimi: deklarativ masofaviy protsedura chaqiruvi (RPC) uslubidagi Java ob'ektlarini Java masofaviy usulni chaqirish (RMI), CORBA (Common Object Request Broker Architecture) va HTTP -ga asoslangan protokollar, shu jumladan veb-xizmatlar ( SOAP (Simple Object Access) qo'llab-quvvatlaydigan tarmoqlar orqali marshalllash . Protokol) )
  • Tranzaksiyalarni boshqarish : bir nechta tranzaksiyalarni boshqarish API-larini birlashtiradi va Java obyektlari uchun tranzaktsiyalarni muvofiqlashtiradi
  • Masofadan boshqarish: Java boshqaruv kengaytmalari (JMX) orqali mahalliy yoki masofaviy konfiguratsiya uchun Java ob'ektlarini deklarativ ta'sir qilish va boshqarish
  • Sinov : birlik testlari va integratsiya testlarini yozish uchun qo'llab-quvvatlash darslari

Tekshirish konteynerining inversiyasi (qaramlik kiritish)

Spring Framework-ning markazida uning boshqaruv konteynerining inversiyasi (IoC) joylashgan bo'lib, u aks ettirish yordamida Java ob'ektlarini sozlash va boshqarishning izchil vositalarini ta'minlaydi. Konteyner muayyan ob'ektlarning ob'ekt hayotiy davrlarini boshqarish uchun javobgardir: bu ob'ektlarni yaratish, ularni ishga tushirish usullarini chaqirish va ularni bir-biriga ulash orqali ushbu ob'ektlarni sozlash.

Konteyner tomonidan yaratilgan ob'ektlar, shuningdek, boshqariladigan ob'ektlar 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.

Ob'ektlarni qaramlikni qidirish yoki qaramlikni in'ektsiya qilish orqali olish mumkin. [13] Tobelikni qidirish - bu qo'ng'iroq qiluvchining konteyner ob'ektidan ma'lum bir nomli yoki ma'lum turdagi ob'ektni so'rashi namunasidir. Bog'liqlik in'ektsiyasi - konteyner konstruktorlar, xususiyatlar yoki zavod usullari orqali ob'ektlarni nomi bilan boshqa ob'ektlarga 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. [14] 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. [15] Dasturchi ob'ektni 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 ob'ektlarda 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 ob'ekt 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:

  • sxemaga asoslangan yondashuv [16] va
  • @AspectJ asosidagi izoh uslubi. [17]
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:mvc="http://www.springframework.org/schema/mvc" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop="http://www.springframework.org/schema/aop" 
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd">

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 funktsiyalarni ta'minlovchi korporativ ilovalar integratsiyasi uchun ramka.

  • marshrutizatorlar - shartlar asosida xabarni xabar kanaliga yo'naltiradi
  • transformatorlar - xabar yukini o'zgartiradi / o'zgartiradi / o'zgartiradi va o'zgartirilgan foydali yuk bilan yangi xabar yaratadi
  • adapterlar - boshqa texnologiyalar va tizimlar (HTTP, AMQP (Kengaytirilgan xabarlar navbati protokoli), JMS (Java xabar xizmati), XMPP (kengaytirilgan xabarlar va mavjudlik protokoli), SMTP (oddiy pochta uzatish protokoli), IMAP (Internet xabarlariga kirish protokoli) bilan integratsiya qilish uchun. ), FTP (Fayl uzatish protokoli), shuningdek FTPS / SFTP, fayl tizimlari va boshqalar. )
  • filtrlar - mezonlar asosida xabarni filtrlaydi. Agar shartlar bajarilmasa, xabar o'chiriladi.
  • xizmat faollashtiruvchilari - xizmat ko'rsatish ob'ektida operatsiyani chaqirish
  • boshqaruv va audit

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 (Andoza:CVE)shunga o'xshash "Spring4Shell" deb nomlanganLog4Shell. [18]

Shuningdek qarang

Ma'lumotnomalar

  1. „Spring Framework 1.0 Final Released“. Official Spring Framework blog (2014-yil 24-mart). Qaraldi: 2021-yil 1-mart.
  2. Jolt winners 2006
  3. „JAX Innovation Award Gewinner 2006“. 2009-yil 17-avgustda asl nusxadan arxivlangan. Qaraldi: 2009-yil 12-avgust.
  4. „Spring Framework 3.2.5 Released“. Official Spring website (2013-yil 7-noyabr). Qaraldi: 2016-yil 16-oktyabr.
  5. „Announcing Spring Framework 4.0 GA Release“. Spring blog (2013-yil 12-dekabr).
  6. „Spring Boot v1.0.0.RELEASE“. github.com.
  7. „Spring Framework 4.2 goes GA“. Spring Blog (2015-yil 31-iyul).
  8. 8,0 8,1 „Spring Framework 4.2 goes GA“. Spring Blog. Manba xatosi: Invalid <ref> tag; name "spring-4.2" defined multiple times with different content
  9. „Upgrading to Spring Framework 5.x“. github.com.
  10. „Reactive Spring“. Spring Blog (2016-yil 9-fevral).
  11. „Spring Framework 6.0 goes GA“. Spring Blog (2022-yil 16-noyabr).
  12. Spring Framework documentation for the Core Container
  13. What is the difference between the depencylookup and dependency injection - Spring Forum. Forum.springsource.org (2009-10-28). Retrieved on 2013-11-24.
  14. Spring VS EJB3
  15. „Pitchfork FAQ“. Qaraldi: 2006-yil 6-iyun.
  16. Spring AOP XML Configuration
  17. AspectJ Annotation Configuration
  18. „Spring4Shell: critical vulnerability in Spring - Kaspersky official blog“.

Bibliografiya

 

Tashqi havolalar

Andoza:Java (Sun)