إطار عمل سبرينغ
إطار عمل Spring هو إطار عمل للتطبيقات وحاوية تحكم معكوسة لمنصة Java . [ 2 ] يمكن لأي تطبيق Java استخدام الميزات الأساسية لهذا الإطار، ولكن توجد أيضًا إضافات لبناء تطبيقات ويب على منصة Jakarta EE . لا يفرض الإطار أي نموذج برمجة محدد . [ 3 ] اكتسب الإطار شعبية في مجتمع Java كإضافة إلى نموذج Enterprise JavaBeans (EJB). [ 4 ] إطار عمل Spring هو برنامج مجاني ومفتوح المصدر . [ 5 ] : 121-122 [ 6 ]
سجل الإصدارات
| إصدار | تاريخ |
|---|---|
| 0.9 | 2003 |
| 1.0 | 24 مارس 2004 |
| 2.0 | 2006 |
| 3.0 | 2009 |
| 4.0 | 2013 |
| 5.0 | 2017 |
| 6.0 | 22 نوفمبر 2022 |
| 6.1 | 16 نوفمبر 2023 |
| 6.2 | 14 نوفمبر 2024 |
| 7.0 | 13 نوفمبر 2025 |
كتب رود جونسون النسخة الأولى ، وأصدر إطار العمل مع نشر كتابه " التصميم والتطوير الاحترافي لـ J2EE" في أكتوبر 2002. صدر إطار العمل لأول مرة بموجب ترخيص Apache 2.0 في يونيو 2003. أما الإصدار الإنتاجي الأول، 1.0، فقد صدر في مارس 2004. [ 7 ] فاز إطار عمل Spring 1.2.6 بجائزة Jolt للإنتاجية وجائزة JAX للابتكار في عام 2006. [ 8 ] [ 9 ] صدر Spring 2.0 في أكتوبر 2006، وSpring 2.5 في نوفمبر 2007، وSpring 3.0 في ديسمبر 2009، وSpring 3.1 في ديسمبر 2011، وSpring 3.2.5 في نوفمبر 2013. [ 10 ] صدر Spring Framework 4.0 في ديسمبر 2013. [ 11 ] تضمنت التحسينات الملحوظة في Spring 4.0 دعم Java SE (الإصدار القياسي) 8، Groovy 2، [ 12 ] [ 13 ] بعض جوانب Java EE 7، و WebSocket . [ 14 ]
تم إصدار Spring Framework 4.2.0 في 31 يوليو 2015، وتمت ترقيته فورًا إلى الإصدار 4.2.1 الذي صدر في 1 سبتمبر 2015. [ 15 ] وهو "متوافق مع Java 6 و7 و8، مع التركيز على التحسينات الأساسية وإمكانيات الويب الحديثة" . [ 16 ]
تم إصدار Spring Framework 4.3 في 10 يونيو 2016 واستمر دعمه حتى عام 2020. [ 17 ] وقد أُعلن أنه "الجيل الأخير ضمن متطلبات نظام Spring 4 العامة (Java 6+، Servlet 2.5+)، [...]" . [ 16 ]
تم بناء Spring 5 على Reactor Core المتوافق مع Reactive Streams . [ 18 ]
تم إصدار Spring Framework 6.0 في 16 نوفمبر 2022 وجاء مع أساس Java 17+ وانتقال إلى Jakarta EE 9+ (في jakartaمساحة الاسم)، مع التركيز على واجهات برمجة تطبيقات Jakarta EE 10 التي تم إصدارها مؤخرًا مثل Servlet 6.0 و JPA 3.1. [ 19 ]
الوحدات
يتضمن إطار عمل Spring عدة وحدات توفر مجموعة من الخدمات:
- حاوية Spring الأساسية: هي الوحدة الأساسية لـ Spring [ 20 ] وتوفر حاويات Spring (
BeanFactoryوApplicationContext). [ 21 ] [ 22 ] [ 23 ] في هذا السياق،spring-coreتُعدّ العنصر [ 24 ] الموجود في الوحدة الأساسية [ 25 ] والمنتمي إلى المجموعةorg.springframework. [ 26 ] يتكون هذاspring-coreالعنصر من حاوية IoC، بالإضافة إلى فئات الأدوات المساعدة [ 24 ] المستخدمة في جميع أنحاء التطبيق. [ 27 ] - البرمجة الموجهة نحو الجوانب : تُمكّن من تنفيذ الاهتمامات المتداخلة . [ 28 ] [ 29 ] وهي
spring-aopعنصر أساسي في إطار عمل البرمجة الموجهة نحو الجوانب. [ 25 ] - المصادقة والتفويض : عمليات أمان قابلة للتكوين تدعم مجموعة من المعايير والبروتوكولات والأدوات والممارسات عبر مشروع Spring Security الفرعي (المعروف سابقًا باسم Acegi Security System for Spring). [ 30 ] [ 31 ]
- الاتفاقية بدلاً من التكوين : يتم تقديم حل سريع لتطوير التطبيقات لتطبيقات المؤسسات القائمة على Spring في وحدة Spring Roo .
- الوصول إلى البيانات : العمل مع أنظمة إدارة قواعد البيانات العلائقية على منصة جافا باستخدام اتصال قواعد بيانات جافا (JDBC) [ 32 ] وأدوات ربط الكائنات العلائقية، ومع قواعد بيانات NoSQL [ 33 ] .
spring-jdbcيوجد عنصر في وحدة JDBC يدعم الوصول إلى JDBC من خلال تضمين فئات إعداد مصدر البيانات. [ 25 ] - حاوية عكس التحكم : تكوين مكونات التطبيق وإدارة دورة حياة كائنات جافا، ويتم ذلك بشكل أساسي عن طريق حقن التبعية . [ 22 ]
- المراسلة: التسجيل التصريحي لكائنات مستمع الرسائل لاستهلاك الرسائل بشفافية من قوائم انتظار الرسائل عبر خدمة رسائل جافا (JMS)، وتحسين إرسال الرسائل عبر واجهات برمجة تطبيقات JMS القياسية. [ 34 ]
- نموذج-عرض-متحكم : إطار عمل قائم على بروتوكول HTTP و servlet يوفر نقاط ربط لتوسيع وتخصيص تطبيقات الويب وخدمات الويب RESTful (نقل الحالة التمثيلية). [ 35 ] [ 36 ]
- إطار عمل الوصول عن بُعد: نمط استدعاء الإجراءات عن بُعد التصريحي (RPC) [ 37 ]، وتنسيق كائنات جافا عبر الشبكات التي تدعم استدعاء أساليب جافا عن بُعد (RMI) [ 38 ] ، وبروتوكولات CORBA (بنية وسيط طلب الكائنات المشتركة) وبروتوكولات HTTP ، بما في ذلك خدمات الويب مثل SOAP (بروتوكول الوصول إلى الكائنات البسيط) [ 39 ] [ 40 ] .
- إدارة المعاملات : توحد العديد من واجهات برمجة تطبيقات إدارة المعاملات وتنسق المعاملات لكائنات جافا. [ 41 ] [ 42 ]
- الإدارة عن بُعد: عرض وإدارة كائنات جافا بشكل تصريحي للتكوين المحلي أو عن بُعد عبر ملحقات إدارة جافا (JMX). [ 41 ] [ 43 ]
- الاختبار : فئات الدعم لكتابة اختبارات الوحدة [ 44 ] واختبارات التكامل . [ 45 ]
- دعم WebFlux: دعم استخدام بيئات التشغيل التفاعلية أو خوادم الويب مثل UnderTow و Netty . [ 25 ] [ 46 ]
- دعم بروتوكول WebSocket: يدعم هذا البرنامج الاتصال باستخدام بروتوكول WebSocket. العنصر الخاص بهذه الوحدة هو
spring-websocket. - دعم XML: دعم ربط الكائنات بملفات XML. [ 25 ] يدعم هذا البرنامج مكتبات مثل Jakarta XML Binding (JAXB) و XStream . [ 25 ] العنصر الخاص بهذه الوحدة هو
spring-oxm...
تُعبأ وحدات Spring كملفات JAR. [ 47 ] ويمكن الوصول إلى هذه الملفات عبر مستودع Maven المركزي باستخدام Maven [ 48 ] أو Gradle . [ 49 ]
حاوية عكس التحكم
حاوية عكس التحكم (IoC) هي الحاوية الأساسية في إطار عمل Spring. [ 2 ] توفر هذه الحاوية وسيلة متسقة لتكوين وإدارة كائنات Java [ 2 ] [ 5 ] : 127-131 باستخدام الانعكاس . [ 50 ] تتولى الحاوية مسؤولية إدارة دورات حياة كائنات محددة: [ 5 ] : 128 إنشاء هذه الكائنات، [ 51 ] استدعاء دوال التهيئة الخاصة بها ، [ 50 ] وتكوين هذه الكائنات من خلال ربطها ببعضها البعض. [ 52 ]
في كثير من الحالات، لا يلزم استخدام الحاوية عند استخدام أجزاء أخرى من إطار عمل Spring، مع أن استخدامها قد يُسهّل تهيئة التطبيق وتخصيصه. توفر حاوية Spring آلية متسقة لتهيئة التطبيقات [ 5 ] : 122 ، وتتكامل مع جميع بيئات Java تقريبًا، بدءًا من التطبيقات الصغيرة وصولًا إلى تطبيقات المؤسسات الكبيرة.
لا يقوم المبرمج بإنشاء الكائن مباشرةً، بل يصف كيفية إنشائه من خلال تعريفه في ملف تهيئة Spring. وبالمثل، لا يتم استدعاء الخدمات والمكونات مباشرةً؛ بل يحدد ملف تهيئة Spring الخدمات والمكونات التي يجب استدعاؤها. يهدف هذا النظام (IoC) إلى تسهيل الصيانة والاختبار.
إنشاء وإدارة الحبوب
تُسمى الكائنات التي يُنشئها الحاوية بالكائنات المُدارة أو الحزم البرمجية . [ 53 ] يُمكن تهيئة الحاوية عن طريق تحميل ملفات XML (لغة الترميز القابلة للتوسيع) [ 51 ] [ 5 ] : 151-152 أو عن طريق اكتشاف تعليقات Java التوضيحية المُحددة على فئات التهيئة. تحتوي مصادر البيانات هذه على تعريفات الحزم البرمجية التي تُوفر المعلومات اللازمة لإنشائها.
هذه @Configurationعبارة عن تعليق توضيحي خاص بـ Spring يُستخدم لتمييز فئة ما كفئة تهيئة. تُزوّد فئة التهيئة Spring بالعناصر (Beans) ApplicationContext. [ 54 ] يتم تهيئة كل طريقة من طرق فئة تهيئة Spring باستخدام هذا @Beanالتعليق التوضيحي. ApplicationContextثم تُعيد الواجهة الكائنات المُهيأة بهذا @Beanالتعليق التوضيحي كعناصر (Beans). تتمثل ميزة التهيئة القائمة على Java مقارنةً بالتهيئة القائمة على XML في تحسين سلامة الأنواع وإمكانية إعادة هيكلة الكود. [ 54 ]
أنواع انعكاس التحكم
توجد عدة أنواع من عكس التحكم. يُعدّ كلٌّ من حقن التبعية والبحث عن التبعية مثالين على عكس التحكم. [ 55 ] يمكن الحصول على الكائنات إما عن طريق البحث عن التبعية أو حقنها. [ 5 ] : 127 [ 56 ]
حقن التبعية
يُعدّ حقن التبعية نمطًا برمجيًا يقوم فيه الحاوية بتمرير الكائنات [ 5 ] : 128 بالاسم إلى كائنات أخرى، إما عبر المُنشئات ، [ 5 ] : 128 أو الخصائص ، أو دوال المصنع . توجد عدة طرق لتنفيذ حقن التبعية: حقن التبعية القائم على المُنشئات، وحقن التبعية القائم على المُعدِّلات، وحقن التبعية القائم على الحقول. [ 57 ]
البحث عن التبعيات
البحث عن التبعية هو نمط حيث يطلب المتصل من الكائن الحاوي كائنًا باسم معين أو من نوع معين.
التوصيل التلقائي
يحتوي إطار عمل Spring على ميزة تُعرف باسم التوصيل التلقائي، والتي تستخدم حاوية Spring لتلبية التبعيات المحددة في خصائص JavaBean تلقائيًا إلى كائنات من النوع المناسب في المصنع الحالي. [ 58 ] لا يمكن أن يحدث هذا إلا إذا كان هناك كائن واحد فقط من النوع المناسب. [ 58 ]
توجد العديد من التعليقات التوضيحية التي يمكن استخدامها لتوصيل كائنات POJO تلقائيًا، بما في ذلك التعليق التوضيحي الخاص بـ Spring @Autowire(بالإضافة إلى العديد من التعليقات التوضيحية الأخرى الخاصة بـ Spring والتي تساعد في حل غموض التوصيل التلقائي مثل التعليقات التوضيحية @Qualifierأو @Primary)، [ 59 ] [ 60 ] والتعليقات التوضيحية القياسية لـ Java @Resourceو @Inject. [ 61 ]
يمكن استخدام التعليق @Qualifierالتوضيحي على فئة تُعرّف عنصرًا لإعلام Spring بإعطاء الأولوية لإنشاء العنصر عند ربطه تلقائيًا بالاسم . [ 60 ]
يمكن استخدام التعليق @Primaryالتوضيحي على فئة تُعرّف كائنًا لإعلام Spring بأولوية إنشاء الكائن عند ربطه تلقائيًا حسب النوع . [ 60 ]
التعليق @Resourceالتوضيحي هو تعليق توضيحي يتوافق مع JSR 250 ، أو التعليقات التوضيحية الشائعة لمنصة Java، ويستخدم لربط المراجع تلقائيًا إلى POJOs بالاسم . [ 61 ]
التعليق @Injectالتوضيحي هو تعليق توضيحي يتوافق مع JSR 300، أو التعليقات التوضيحية القياسية للحقن، ويستخدم لربط المراجع تلقائيًا بكائنات POJO حسب النوع . [ 61 ]
إطار برمجة موجه نحو الجوانب
يحتوي إطار عمل Spring على إطار برمجة موجه نحو الجوانب (AOP) خاص به، يعمل على تقسيم الاهتمامات المتداخلة إلى وحدات نمطية . [ 62 ] والدافع وراء إنشاء إطار عمل AOP منفصل هو توفير ميزات AOP الأساسية دون تعقيد كبير في التصميم أو التنفيذ أو الإعداد. يستفيد إطار عمل Spring AOP استفادة كاملة من حاوية Spring.
إطار عمل Spring AOP قائم على نمط الوكيل . [ 63 ] [ 25 ] يتم تكوينه أثناء التشغيل ، مما يلغي الحاجة إلى خطوة تجميع أو ربط أثناء التحميل. من ناحية أخرى، لا يسمح الاعتراض إلا بتنفيذ الأساليب العامة على الكائنات الموجودة عند نقطة الربط .
بالمقارنة مع إطار عمل AspectJ ، يُعد Spring AOP أقل قوة، ولكنه أيضًا أقل تعقيدًا. يدعم Spring 1.2 إمكانية تهيئة جوانب AspectJ داخل الحاوية. أضاف Spring 2.0 مزيدًا من التكامل مع AspectJ؛ فعلى سبيل المثال، يُعاد استخدام لغة نقاط القطع ويمكن دمجها مع جوانب Spring AOP. علاوة على ذلك، أضاف Spring 2.0 مكتبة Spring Aspects التي تستخدم AspectJ لتوفير ميزات Spring الشائعة، مثل إدارة المعاملات التصريحية [ 63 ] وحقن التبعية عبر نسج AspectJ في وقت الترجمة أو التحميل [ 64 ] . يستخدم SpringSource مكتبة AspectJ AOP في مشاريع Spring أخرى مثل Spring Roo وSpring Insight، بينما يوفر Spring Security مكتبة جوانب تعتمد على AspectJ.
صُممت تقنية Spring AOP للعمل مع الاهتمامات المشتركة داخل إطار عمل Spring. [ 5 ] : 473 يمكن إثراء أي كائن يتم إنشاؤه وتكوينه بواسطة الحاوية باستخدام Spring AOP.
منذ الإصدار 2.0 من إطار العمل، يوفر Spring نهجين لتكوين AOP:
<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" >قرر فريق Spring عدم إدخال مصطلحات جديدة متعلقة ببرمجة الجوانب الموجهة (AOP). لذلك، في وثائق Spring المرجعية وواجهة برمجة التطبيقات (API)، فإن مصطلحات مثل الجانب (aspect )، ونقطة الربط (join point)، والنصيحة ( advice) ، ونقطة القطع (pointcut)، والمقدمة (introduction)، والكائن المستهدف ( advised object )، ووكيل AOP (AOP proxy )، والنسج (weaving) لها نفس المعاني كما في معظم أطر عمل AOP الأخرى (وخاصة AspectJ).
إطار عمل الوصول إلى البيانات
يُعالج إطار عمل الوصول إلى البيانات في Spring الصعوبات الشائعة التي يواجهها المطورون عند العمل مع قواعد البيانات في التطبيقات. ويوفر الدعم لجميع أطر عمل الوصول إلى البيانات الشائعة في Java، بما في ذلك: JDBC، وiBatis / MyBatis، وHibernate، و Java Data Objects ( JDO ، الذي توقف دعمه منذ الإصدار 5.x )، و Jakarta Persistence API (JPA)، و Oracle TopLink ، و Apache OJB ، و Apache Cayenne ، وغيرها .
توفر Spring هذه الميزات لجميع هذه الأطر المدعومة
- إدارة الموارد – الحصول على موارد قاعدة البيانات وتحريرها تلقائيًا
- معالجة الاستثناءات - ترجمة الاستثناء المتعلق بالوصول إلى البيانات إلى تسلسل هرمي للوصول إلى البيانات في Spring [ 67 ]
- المشاركة في المعاملات – المشاركة الشفافة في المعاملات الجارية [ 5 ] : 290-291
- فك تغليف الموارد – استرداد كائنات قاعدة البيانات من أغلفة مجموعة الاتصالات
- تجريد لمعالجة الكائنات الثنائية الكبيرة (BLOB) والكائنات النصية الكبيرة (CLOB)
تُصبح جميع هذه الميزات متاحة عند استخدام فئات القوالب التي يوفرها Spring لكل إطار عمل مدعوم. [ 68 ] وقد انتقد البعض هذه الفئات، معتبرينها تدخلية ولا تُقدم أي ميزة مقارنةً باستخدام واجهة برمجة تطبيقات Hibernate مباشرةً، على سبيل المثال. [ 69 ] واستجابةً لذلك، أتاح مطورو Spring إمكانية استخدام واجهتي برمجة تطبيقات Hibernate وJPA مباشرةً. إلا أن هذا يتطلب إدارة شفافة للمعاملات، حيث لم يعد كود التطبيق مسؤولاً عن الحصول على موارد قاعدة البيانات وإغلاقها، [ 70 ] كما أنه لا يدعم ترجمة الاستثناءات. [ 71 ]
إلى جانب إدارة المعاملات في Spring، يوفر إطار عمل الوصول إلى البيانات الخاص بها تجريدًا مرنًا للعمل مع أطر عمل الوصول إلى البيانات. لا يوفر إطار عمل Spring واجهة برمجة تطبيقات موحدة للوصول إلى البيانات؛ بل يحتفظ بكامل إمكانيات واجهات برمجة التطبيقات المدعومة. يُعد إطار عمل Spring الإطار الوحيد المتاح في Java الذي يوفر بيئات وصول مُدارة إلى البيانات خارج خادم التطبيقات أو الحاوية. [ 72 ]
أثناء استخدام Spring لإدارة المعاملات مع Hibernate، قد يلزم تكوين المكونات التالية:
- إعجاب أو [ 33 ]
Datasourcecom.mchange.v2.c3p0.ComboPooledDataSourceorg.apache.commons.dbcp.BasicDataSource - إعجاب بالخاصية [ 73 ] [ 5 ] : 173
SessionFactoryorg.springframework.orm.hibernate3.LocalSessionFactoryBeanDataSource - أ
HibernateProperties[ 5 ] : 173 إعجابorg.springframework.beans.factory.config.PropertiesFactoryBean - إعجاب مع سمة [ 73 ]
TransactionManagerorg.springframework.orm.hibernate3.HibernateTransactionManagerSessionFactory
تشمل نقاط التكوين الأخرى ما يلي:
- تكوين نقاط القطع في عملية القطع المتقدمة (AOP).
- دلالات المعاملات لنصائح البرمجة الموجهة نحو الجوانب .
إدارة المعاملات
يُضيف إطار إدارة المعاملات في Spring آلية تجريد إلى منصة Java. [ 74 ] وتتيح هذه الآلية التجريدية ما يلي:
- العمل مع المعاملات المحلية والعالمية [ 5 ] : 258 (المعاملة المحلية لا تتطلب خادم تطبيقات )
- العمل مع المعاملات المتداخلة [ 75 ]
- العمل مع نقاط الحفظ [ 75 ]
- العمل في جميع بيئات منصة جافا تقريبًا
بالمقارنة، فإن واجهة برمجة تطبيقات معاملات جافا (JTA) تدعم فقط المعاملات المتداخلة والمعاملات العالمية، وتتطلب خادم تطبيقات (وفي بعض الحالات، نشر التطبيقات في خادم تطبيقات).
يوفر إطار عمل Spring PlatformTransactionManager[ 76 ] لعدد من استراتيجيات إدارة المعاملات:
- المعاملات التي تتم إدارتها على اتصال JDBC [ 74 ]
- تتم إدارة المعاملات على وحدات العمل الخاصة بربط الكائنات العلائقية [ 74 ]
- المعاملات المُدارة عبر JTA [ 74 ]
JtaTransactionManager[ 77 ] [ 5 ] : 255-257 وUserTransaction[ 5 ] : 234 - تتم إدارة المعاملات على موارد أخرى، مثل قواعد بيانات الكائنات.
إلى جانب آلية التجريد هذه، يوفر الإطار طريقتين لإضافة إدارة المعاملات إلى التطبيقات:
- إجرائياً، باستخدام Spring's
TransactionTemplate[ 78 ] - بشكل تصريحي، باستخدام البيانات الوصفية مثل XML أو التعليقات التوضيحية Java (
@Transactional، [ 63 ] إلخ.)
بالإضافة إلى إطار عمل الوصول إلى البيانات الخاص بـ Spring - والذي يدمج إطار عمل إدارة المعاملات - يُمكن إعداد نظام معاملات من خلال التكوين دون الحاجة إلى الاعتماد على JTA أو EJB . كما يتكامل إطار عمل المعاملات مع محركات المراسلة [ 79 ] والتخزين المؤقت [ 80 ] .
إطار عمل نموذج-عرض-متحكم

يتميز إطار عمل Spring بنموذج MVC الخاص به لتطبيقات الويب ، [ 36 ] والذي لم يكن مخططًا له في الأصل. قرر مطورو Spring كتابة إطار عمل الويب الخاص بهم كرد فعل لما اعتبروه تصميمًا رديئًا لإطار عمل Jakarta Struts الشهير آنذاك، [ 81 ] بالإضافة إلى أوجه القصور في أطر العمل الأخرى المتاحة. وعلى وجه الخصوص، شعروا بعدم كفاية الفصل بين طبقتي العرض ومعالجة الطلبات، وبين طبقة معالجة الطلبات والنموذج. [ 82 ]
مثل Struts، يُعد Spring MVC إطار عمل قائم على الطلبات. [ 5 ] : 375 يُعرّف هذا الإطار واجهات استراتيجية [ 5 ] : 144 لجميع المسؤوليات التي يجب أن يتولاها إطار عمل حديث قائم على الطلبات. يهدف كل إطار عمل إلى أن يكون بسيطًا وواضحًا ليسهل على مستخدمي Spring MVC كتابة تطبيقاتهم الخاصة، إذا رغبوا في ذلك. يُمهّد MVC الطريق لكتابة كود واجهة أمامية أكثر وضوحًا. جميع الواجهات مرتبطة ارتباطًا وثيقًا بواجهة برمجة تطبيقات Servlet . يرى البعض أن هذا الارتباط الوثيق بواجهة برمجة تطبيقات Servlet يُعدّ قصورًا من جانب مطوري Spring في توفير مستوى عالٍ من التجريد لتطبيقات الويب. مع ذلك، يضمن هذا الارتباط بقاء ميزات واجهة برمجة تطبيقات Servlet متاحة للمطورين، مع توفير إطار عمل عالي التجريد لتسهيل العمل معها.
DispatcherServletيُعد هذا الصنف وحدة التحكم الأمامية [ 83 ] للإطار وهو مسؤول عن تفويض التحكم إلى الواجهات المختلفة أثناء مراحل تنفيذ طلب HTTP . [ 84 ]
فيما يلي أهم الواجهات التي تحددها Spring MVC ومسؤولياتها: [ 85 ]
Controllerيأتي هذا الوسيط بين مساري HTTPModelوViewHTTP لإدارة الطلبات الواردة وإعادة توجيهها إلى الاستجابة المناسبة. [ 86 ]Controllerيقوم بربط طلب HTTP بالطرق المناسبة. [ 87 ] يعمل كبوابة توجه المعلومات الواردة، حيث ينتقل بين مسارModelHTTP ومسار HTTPView.HandlerAdapter: مسؤول عن تنفيذ الكائنات التي تعالج الطلبات الواردة. [ 88 ]HandlerInterceptor: مسؤول عن اعتراض الطلبات الواردة. [ 88 ] مشابه لمرشحات Servlet، ولكنه ليس مساوياً لها [ 5 ] : 509 (استخدامه اختياري [ 5 ] : 511 ولا يتم التحكم فيه بواسطةDispatcherServlet).HandlerMapping: مسؤول عن اختيار الكائنات التي تتعامل مع الطلبات الواردة (المعالجات) بناءً على أي سمة أو شرط داخلي أو خارجي لتلك الطلبات [ 84 ]LocaleResolver: مسؤول عن تحديد لغة المستخدم الفردية وحفظها اختيارياً . [ 89 ]MultipartResolver: تسهيل العمل مع عمليات تحميل الملفات عن طريق تغليف الطلبات الواردة. [ 90 ]Viewمسؤول عن إعادة الاستجابة إلى العميل.Viewيجب ألا يحتوي على أي منطق أعمال، ويجب أن يعرض فقط البيانات المغلفة بواسطةModel. [ 36 ] قد تذهب بعض الطلبات مباشرةً إلىViewدون المرور بجزءModel؛ بينما قد تمر طلبات أخرى عبر الأجزاء الثلاثة جميعها.ViewResolver: مسؤول عن اختيار aViewبناءً على اسم منطقي لـView[ 91 ] [ 92 ] (الاستخدام ليس مطلوبًا بشكل صارم [ 5 ] : 511 ).Modelمسؤول عن تغليف بيانات الأعمال. [ 91 ] يتمModelعرضها للعرض بواسطة وحدة التحكم. [ 5 ] : 374 (الاستخدام ليس إلزاميًا).
لكل واجهة استراتيجية من الواجهات المذكورة أعلاه دورٌ هام في الإطار العام. تتميز التجريدات التي توفرها هذه الواجهات بقوتها، مما يسمح بمجموعة من الاختلافات في تطبيقاتها. [ 5 ] : 144 يأتي Spring MVC مزودًا بتطبيقات لجميع هذه الواجهات، ويقدم مجموعة من الميزات فوق واجهة برمجة تطبيقات Servlet. ومع ذلك، يحق للمطورين والموردين كتابة تطبيقات أخرى. يستخدم Spring MVC java.util.Mapواجهة Java كتجريد موجه نحو البيانات، حيث Modelيُتوقع أن تكون المفاتيح Stringقيمًا.
تُعد سهولة اختبار تطبيقات هذه الواجهات إحدى المزايا المهمة لمستوى التجريد العالي الذي يوفره Spring MVC. [ 93 ] [ 5 ] : 324DispatcherServlet مرتبط ارتباطًا وثيقًا بحاوية Spring للتحكم العكسي لتكوين طبقات الويب للتطبيقات. مع ذلك، يمكن لتطبيقات الويب استخدام أجزاء أخرى من إطار عمل Spring، بما في ذلك الحاوية، واختيار عدم استخدام Spring MVC.
سير عمل Spring MVC
عندما ينقر المستخدم على رابط أو يرسل نموذجًا في متصفح الويب الخاص به، ينتقل الطلب إلى Spring DispatcherServlet. DispatcherServletيُعد Spring وحدة تحكم أمامية في Spring MVC. [ 84 ] [ 94 ] يتميز Spring DispatcherServletبقابلية عالية للتخصيص والمرونة. [ 94 ] على وجه التحديد، فهو قادر على التعامل مع أنواع أكثر من معالجات الطلبات مقارنةً بأي تطبيقات أخرى org. springframework.web.servlet.mvc.Controllerأو org. springframework.stereotype.Controllerفئات مُعَلَّمة. [ 94 ] يستشير Spring تعيينًا واحدًا أو أكثر لمعالجات الطلبات. [ 84 ]DispatcherServlet يختار Spring وحدة تحكم مناسبة ويُعيد توجيه الطلب إليها. Controllerيقوم Spring بمعالجة الطلب المحدد وإنشاء نتيجة. تُعرف هذه النتيجة باسم "معالج الطلبات" Model. يجب تنسيق هذه المعلومات بلغة HTML أو أي تقنية واجهة أمامية أخرى مثل صفحات خادم Jakarta (المعروفة أيضًا باسم JSP) [ 84 ] [ 95 ] أو Thymeleaf . [ 95 ] يُعد Spring هو واجهة Viewالتطبيق. [ 84 ] جميع المعلومات موجودة في كائن ModelSpring View. عندما لا يكون المتحكم مرتبطًا بعرض معين، DispatcherServletفإنه يجد العرض الفعلي (مثل JSP View) بمساعدة [ 84 ] [ 5 ] : 390-391ViewResolver
تكوين DispatcherServlet
اعتبارًا من إصدار مواصفات Servlet 3.0، هناك عدة طرق لتكوين DispatcherServlet: [ 96 ]
- عن طريق تهيئته
web.xmlكما هو موضح أدناه: [ 96 ]
<servlet> <servlet-name> MyServlet </servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> </servlet><servlet-mapping> <servlet-name> MyServlet </servlet-name> <url-pattern> / <url-pattern> </servlet-mapping>- عن طريق تهيئته في
web-fragment.xml. [ 96 ] - باستخدام
javax.servlet.ServletContainerInitializer. [ 96 ] - من خلال تطبيق
org.springframework.web.WebApplicationInitializerالواجهة. [ 96 ] - باستخدام خاصية التكوين التلقائي المدمجة في Spring Boot، والتي تستخدم
SpringBootServletInitializerالفئة. [ 96 ]
إطار عمل الوصول عن بعد
إطار عمل الوصول عن بُعد في Spring هو تجريد للعمل مع مختلف التقنيات القائمة على استدعاء الإجراءات عن بُعد (RPC ) المتوفرة على منصة Java، وذلك لتوصيل العميل ومعالجة الكائنات على الخوادم. [ 97 ] وتتمثل أهم ميزة يقدمها هذا الإطار في تسهيل تهيئة هذه التقنيات واستخدامها قدر الإمكان من خلال الجمع بين عكس التحكم والبرمجة الموجهة نحو الجوانب (AOP).
يوفر الإطار استعادة الأعطال (إعادة الاتصال التلقائي بعد فشل الاتصال) وبعض التحسينات لاستخدام جانب العميل لـ EJB remote stateless session beans .
يوفر Spring الدعم لهذه البروتوكولات والمنتجات بشكل فوري.
- بروتوكولات تعتمد على HTTP
- هيسيان : بروتوكول تسلسل ثنائي، [ 98 ] [ 5 ] : 335 مفتوح المصدر [ 5 ] : 335 ويتم صيانته بواسطة بروتوكولات قائمة على CORBA . تتولى شركة Caucho صيانة هيسيان . [ 5 ] : 335 يُعد هيسيان مناسبًا لاحتياجات الاتصال عن بُعد عديم الحالة، وخاصةً الاتصال بين تطبيقات جافا. [ 5 ] : 335-336
- بورلاب: بروتوكول ثنائي قائم على لغة XML، مفتوح المصدر وتتولى شركة كوتشو صيانته . [ 98 ] [ 5 ] : 335 الميزة الوحيدة لاستخدام بورلاب بدلاً من هيسيان هي قابليته للتحليل بواسطة XML وسهولة قراءته . [ 5 ] : 335 أما بالنسبة للاتصال بين تطبيقات جافا، فيُفضل استخدام هيسيان لأنه أخف وزنًا وأكثر كفاءة. [ 5 ] : 335
- RMI (1): استدعاءات الأساليب باستخدام بنية RMI ولكنها خاصة بـ Spring [ 97 ]
- RMI (2): استدعاءات الأساليب باستخدام واجهات RMI المتوافقة مع استخدام RMI العادي [ 97 ]
- RMI-IIOP ( CORBA ): استدعاءات الأساليب باستخدام RMI-IIOP/CORBA
- تكامل عميل Enterprise JavaBean [ 99 ]
- اتصال حزمة جلسة EJB المحلية عديمة الحالة: الاتصال بحزم جلسة EJB المحلية عديمة الحالة
- اتصال حزمة جلسة EJB البعيدة عديمة الحالة: الاتصال بحزم جلسة EJB البعيدة عديمة الحالة
- صابون
- التكامل مع إطار عمل خدمات الويب Apache Axis [ 100 ]
يوفر Apache CXF التكامل مع Spring Framework لتصدير الكائنات على جانب الخادم بأسلوب RPC. [ 100 ]
يتم تكوين كل من إعداد العميل والخادم لجميع البروتوكولات والمنتجات التي تدعمها إطار عمل الوصول عن بعد Spring (باستثناء دعم Apache Axis) في حاوية Spring Core.
يوجد تطبيق بديل مفتوح المصدر (Cluster4Spring) لنظام فرعي للاتصال عن بعد مضمن في إطار عمل Spring يهدف إلى دعم مخططات مختلفة للاتصال عن بعد (1-1، 1-متعدد، اكتشاف الخدمات الديناميكية).
تطوير التطبيقات السريع بالاعتماد على الاتفاقيات بدلاً من التكوين
حذاء الربيع
يُعدّ Spring Boot Extension حلاً من Spring يعتمد على الاتفاقيات بدلاً من التكوين لإنشاء تطبيقات Spring مستقلة وجاهزة للإنتاج [ 101 ] يمكنك تشغيلها مباشرةً. [ 102 ] وهو مُهيأ مسبقًا وفقًا لرؤية فريق Spring [ 103 ] [ 104 ] لأفضل تكوين واستخدام لمنصة Spring ومكتبات الطرف الثالث، مما يُمكّنك من البدء بأقل جهد. لا تتطلب معظم تطبيقات Spring Boot سوى القليل من تكوين Spring. [ 105 ]
الميزات الرئيسية:
- إنشاء تطبيقات Spring مستقلة
- قم بتضمين Tomcat أو Jetty [ 106 ] مباشرة (لا حاجة لنشر ملفات WAR )
- قم بتوفير نماذج كائنات المشروع (POMs) ذات الآراء المحددة لتبسيط تكوين Maven / Gradle الخاص بك [ 107 ]
- قم بتهيئة Spring تلقائيًا كلما أمكن ذلك [ 108 ]
- توفير ميزات جاهزة للإنتاج [ 101 ] مثل المقاييس ، [ 109 ] وفحوصات السلامة [ 109 ] والتكوين الخارجي [ 110 ]
- لا يوجد توليد للرموز على الإطلاق [ 106 ] ولا يوجد شرط [ 107 ] لتكوين XML. [ 111 ]
- تكامل سلس ويدعم جميع أنماط تكامل المؤسسات.
سبرينغ رو
Spring Roo هو مشروع مجتمعي يوفر منهجًا بديلًا قائمًا على توليد الكود، يستخدم مبدأ "الاتفاقيات بدلًا من التكوين" لبناء تطبيقات جافا بسرعة . يدعم حاليًا Spring Framework وSpring Security و Spring Web Flow . يتميز Roo عن أطر تطوير التطبيقات السريعة الأخرى بالتركيز على:
- إمكانية التوسع (عبر الإضافات)
- إنتاجية منصة جافا (مقارنة باللغات الأخرى)
- تجنب الاحتجاز (يمكن إزالة منتج رو في غضون دقائق قليلة من أي تطبيق)
- تجنب وقت التشغيل (مع مزايا النشر المرتبطة به)
- سهولة الاستخدام (وخاصة من خلال ميزات واجهة المستخدم وأنماط الاستخدام)
إطار عمل المعالجة الدفعية
Spring Batch هو إطار عمل لمعالجة الدفعات يوفر وظائف قابلة لإعادة الاستخدام ضرورية لمعالجة كميات كبيرة من السجلات، بما في ذلك:
يوفر خدمات وميزات تقنية أكثر تقدماً تمكن من تنفيذ مهام دفعية عالية الحجم [ 113 ] وعالية الأداء [ 112 ] من خلال تقنيات التحسين والتقسيم [ 112 ] .
ينفذ Spring Batch سلسلة من المهام؛ تتكون المهمة من عدد من الخطوات، وتتألف كل خطوة من مهمة "قراءة-معالجة-كتابة" أو مهمة عملية واحدة (tasklet). تُعرف مهمة العملية الواحدة أيضًا باسم tasklet. [ 114 ] وهي تعني القيام بمهمة واحدة فقط، مثل تنظيف الموارد قبل أو بعد بدء أو اكتمال خطوة ما.
تتألف عملية "القراءة-المعالجة-الكتابة" من الخطوات التالية: "قراءة" البيانات من مصدر ( قيم مفصولة بفواصل (CSV)، أو XML، أو قاعدة بيانات)، و"معالجتها"، ثم "كتابتها" إلى مصادر أخرى (CSV، أو XML، أو قاعدة بيانات). على سبيل المثال، قد تقرأ خطوة ما البيانات من ملف CSV، [ 114 ] وتعالجها، ثم تكتبها في قاعدة البيانات. يوفر Spring Batch عددًا من الفئات لقراءة/كتابة ملفات CSV وXML وقواعد البيانات. [ 115 ]
يمكن ربط الخطوات معًا لتشغيلها كعملية واحدة. [ 114 ]
إطار التكامل
Spring Integration هو إطار عمل لتكامل تطبيقات المؤسسات يوفر وظائف قابلة لإعادة الاستخدام ضرورية لهياكل المراسلة أو الهياكل القائمة على الأحداث .
- الموجهات - تقوم بتوجيه رسالة إلى قناة الرسائل بناءً على الشروط [ 116 ]
- المحولات - تقوم بتحويل/تغيير حمولة الرسالة وإنشاء رسالة جديدة بحمولة محولة [ 117 ]
- المحولات - تتكامل مع التقنيات والأنظمة الأخرى (HTTP، AMQP (بروتوكول قائمة انتظار الرسائل المتقدمة)، [ 118 ] JMS (خدمة رسائل جافا)، XMPP (بروتوكول المراسلة والحضور القابل للتوسيع)، SMTP (بروتوكول نقل البريد البسيط)، [ 119 ] IMAP (بروتوكول الوصول إلى رسائل الإنترنت)، FTP (بروتوكول نقل الملفات) بالإضافة إلى FTPS / SFTP ، وأنظمة الملفات، إلخ.)
- الفلاتر – تقوم بتصفية الرسالة بناءً على معايير محددة. إذا لم يتم استيفاء هذه المعايير، يتم تجاهل الرسالة. [ 120 ]
- مُنشِّطات الخدمة – تستدعي عمليةً على كائن خدمة. يدعم Spring استخدام التعليق التوضيحي
@ServiceActivatorللإعلان عن المكون الذي يتطلب هذه الوظيفة. [ 121 ] - الإدارة والتدقيق
- البوابات - تُعرّض واجهةً للعميل للخدمات المطلوبة. يتولى وسيط المراسلة مسؤولية توفير هذه الواجهة. تفصل هذه الواجهة وسيط المراسلة عن العميل بإخفاء واجهات برمجة تطبيقات JMS أو Spring Integration الأساسية. ترتبط البوابات بنمط الواجهة (Facade pattern ). يوفر صنف التكامل في Spring
SimpleMessagingGatewayدعمًا أساسيًا للبوابات.SimpleMessagingGatewayيُمكّن تطبيق Spring من تحديد القناة التي تُرسل الطلبات، والقناة التي تتوقع استقبال الاستجابات. ينصب التركيز الأساسي علىSimpleMessagingGatewayالتعامل مع حمولات البيانات، مما يُجنّب العميل تفاصيل الرسائل المُرسلة والمُستلمة المعقدة.SimpleMessagingGatewayيُستخدم مع القنوات لتمكين التكامل مع أنظمة الملفات، وJMS، والبريد الإلكتروني، أو أي أنظمة أخرى تتطلب حمولات بيانات وقنوات. [ 122 ] - المُقسِّم - يفصل حمولة بيانات كبيرة إلى حمولات أصغر لدعم مسارات معالجة مختلفة. يتم تحقيق وظيفة المُقسِّم في Spring باستخدام مُكوِّن المُقسِّم. عادةً ما يُعيد مُكوِّن المُقسِّم توجيه الرسائل إلى فئات ذات وظائف أكثر تخصصًا. يدعم Spring التعليق
@Splitterالتوضيحي لتعريف المُكوِّن الذي يتطلب هذه الوظيفة. [ 123 ] - المُجمِّع - يُستخدم لدمج عدة رسائل في نتيجة واحدة. وبشكل عام، يُعد المُجمِّع عكس المُقسِّم. ينشر المُجمِّع رسالة واحدة لجميع المكونات اللاحقة. يدعم Spring التعليق
@Aggregatorالتوضيحي لتحديد المكون الذي يتطلب هذه الوظيفة. [ 123 ]
يدعم Spring Integration البنى القائمة على الأنابيب والمرشحات.
Spring WebSocket
من القواعد الأساسية للتعامل الفعال مع تدفقات البيانات عدم حظرها مطلقًا. [ 124 ] يُعدّ بروتوكول WebSocket حلاً عمليًا لهذه المشكلة. [ 124 ] بروتوكول WebSocket هو بروتوكول نقل منخفض المستوى يسمح بقنوات اتصال ثنائية الاتجاه عبر اتصال TCP . يعمل WebSocket كبديل لبروتوكول HTTP لتمكين الاتصال ثنائي الاتجاه بين العميل والخادم. يُعدّ WebSocket مفيدًا بشكل خاص للتطبيقات التي تتطلب تبادلًا متكررًا وسريعًا لأجزاء صغيرة من البيانات، بسرعة وحجم كبيرين. [ 124 ]
يدعم Spring بروتوكول WebSocket من خلال توفير واجهة برمجة تطبيقات WebSocket للتطبيقات التفاعلية. @EnableWebSocketتُتيح هذه الخاصية معالجة طلبات WebSocket عند وضعها في فئة تكوين Spring. تُعد واجهة WebSocketRegistry واجهةً إلزاميةً WebSocketConfigurerتُتيح الوصول إلى WebSocket WebSocketConfigurer. بعد ذلك، يتم ربط عنوان URL الخاص بـ WebSocket بالمعالجات المناسبة من خلال تنفيذ دالة registerWebSocketHandlers(WebSocketHandlerRegistry). [ 125 ]
ويب فلوكس الربيعي
Spring WebFlux هو إطار عمل يتبع نموذج البرمجة الوظيفية، ومصمم لبناء تطبيقات Spring التفاعلية. يستخدم هذا الإطار البرمجة الوظيفية وReactive Streams بشكل مكثف. يُعد Spring WebFlux مناسبًا بشكل خاص للتطبيقات التي تتطلب إرسال واستقبال المعلومات بشكل فوري، مثل تطبيقات الويب التي تدعم خاصية الدردشة. [ 126 ]
على الرغم من أن التطبيقات التي تستخدم تقنية Spring WebFlux عادةً ما تكون أقل وضوحًا من نظيراتها في نمط MVC، إلا أنها أكثر مرونة وأسهل في التوسيع. [ 127 ] يقلل Spring WebFlux من الحاجة إلى التعامل مع التعقيدات المرتبطة بمزامنة الوصول إلى الخيوط. [ 127 ]
يدعم Spring WebFlux أحداث الخادم المرسلة (SSE)، وهي تقنية دفع من الخادم تسمح للعميل بالحصول على تحديثات تلقائية من الخادم عبر اتصال HTTP. هذا الاتصال أحادي الاتجاه، ويشترك في عدد من أوجه التشابه مع نموذج النشر/الاشتراك الموجود في JMS. [ 124 ]
العلاقة مع شركة جاكرتا إنتربرايز بينز (EJB)
يمكن تحويل الحاوية إلى حاوية متوافقة جزئيًا مع معيار EJB 3.0 (Enterprise JavaBeans) باستخدام مشروع Pitchfork. ينتقد البعض إطار عمل Spring لعدم توافقه مع المعايير. [ 128 ] مع ذلك، لا تعتبر SpringSource التوافق مع معيار EJB 3 هدفًا رئيسيًا، وتؤكد أن إطار عمل Spring والحاوية يتيحان نماذج برمجة أكثر قوة. [ 129 ]
ثغرة أمنية في Spring4Shell
تم نشر ثغرة أمنية تسمح بتنفيذ تعليمات برمجية عن بُعد، وتؤثر على إصدارات معينة من إطار عمل Spring، في أبريل 2022 تحت رقم CVE - 2022-22965 . وقد أُطلق عليها اسم Spring4Shell نسبةً إلى ثغرة Log4Shell التي ظهرت مؤخرًا ، حيث تتشابه كلتاهما في إثبات المفهوم الذي يسمح للمهاجمين، على الأجهزة المُعرَّضة للخطر، بالوصول إلى واجهة سطر الأوامر [ 130 ] أو حتى التحكم الكامل بها. [ 131 ]
انظر أيضاً
الاقتباسات
- ↑ https://github.com/spring-projects/spring-framework/releases/tag/v7.0.5 .
{{cite web}}: مفقود أو فارغ|title=( مساعدة ) - 1 2 3 Deinum et al. 2014 ، ص. 47 ، §2 مهام الربيع الأساسية.
- ↑ "نظرة عامة على إطار عمل Spring" . docs.spring.io .
- ↑ Deinum et al. 2014 ، ص 694–698 ، §16-2 دمج نظامين باستخدام JMS.
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 جونسون وهولر 2004 .
- ↑ Deinum & Cosmina 2021 ، ص. 1 ، §1 إنشاء بيئة تنمية محلية.
- ↑ "إصدار Spring Framework 1.0 النهائي" . مدونة Spring Framework الرسمية . 24 مارس 2014. تم الاطلاع عليه في 1 مارس 2021 .
- ↑ الفائزون بجائزة جولت لعام 2006
- ↑ "الفائز بجائزة جاكس للابتكار لعام 2006" . مؤرشف من الأصل بتاريخ 17 أغسطس 2009. تم الاطلاع عليه بتاريخ 12 أغسطس 2009 .
- ↑ "إصدار Spring Framework 3.2.5" . الموقع الرسمي لـ Spring . 7 نوفمبر 2013. تاريخ الاطلاع: 16 أكتوبر 2016 .
- ↑ "الإعلان عن الإصدار العام من Spring Framework 4.0" . مدونة Spring. 12 ديسمبر 2013.
- ↑ Walls 2016 ، ص 92-106 ، §5.
- ↑ Cosmina et al. 2017 ، ص 125-126 ، §4 تكوين الزنبرك بالتفصيل و Spring Boot.
- ^ كوزمينا وآخرون. 2017 ، الصفحات من 1 إلى 18، §1 تقديم الربيع.
- ↑ "إصدار Spring Framework 4.2 متاح الآن" . مدونة Spring. 31 يوليو 2015.
- 1 2 "إصدار Spring Framework 4.2 متاح الآن" . مدونة Spring.
- ↑ "إصدارات إطار عمل Spring: الإصدارات المدعومة" . github.com .
- ↑ "الربيع التفاعلي" . مدونة الربيع. 9 فبراير 2016.
- ↑ "إصدار Spring Framework 6.0 متاح الآن" . مدونة Spring. 16 نوفمبر 2022.
- ↑ Walls 2019 ، ص 48.
- ↑ وثائق إطار عمل Spring للحاوية الأساسية
- 1 2 جونسون وآخرون 2005 ، الفصل §2 - مصنع الفول وسياق التطبيق.
- ^ دينوم وآخرون. 2014 ، ص. 137، §3-1 استخدام Java Config لتكوين POJOs.
- 1 2 جونسون وهويلر 2004 ، ص. 150 ، تقديم إطار عمل Spring - مصنع الفول الأساسي.
- 1 2 3 4 5 6 7 Deinum & Cosmina 2021 ، ص 22-25 ، §2 أساسيات إطار عمل Spring - إطار عمل Spring.
- ↑ Walls 2016 ، ص 240 ، §الملحق د تبعيات Spring Boot.
- ↑ جونسون وآخرون 2005 ، الفصل §1 مقدمة إطار عمل Spring - ملخص الوحدة.
- ↑ جونسون وآخرون 2005 ، الفصل §4 - الربيع و AOP.
- ^ دينوم وآخرون. 2014 ، الصفحات 196-198، §3-17 مقدمات AOP لـ POJOs.
- ↑ جونسون وآخرون 2005 ، نظام أمان Acegi لـ Spring.
- ^ دينوم وآخرون. 2014 ، ص. 331، §7 أمن الربيع.
- ↑ Walls 2019 ، ص 56-59.
- 1 2 3 4 5 6 دينوم وآخرون. 2014 ، الصفحات من 419 إلى 426، §10 الوصول إلى البيانات.
- ↑ Deinum et al. 2014 ، ص 677–681 ، §15-4 إنشاء POJOs مدفوعة بالرسائل في Spring.
- ↑ جونسون وآخرون 2005 ، الفصل §12 - إطار عمل MVC للويب.
- 1 2 3 دينوم وآخرون. 2014 ، ص. 217، §4 الربيعMVC.
- ↑ Deinum et al. 2014 ، ص 525-534 ، §12-3 كتابة ItemWriter و ItemReader مخصصين.
- ↑ Deinum et al. 2014 ، ص 627-632 ، §14-7 عرض الخدمات واستدعائها من خلال RMI ؛ §14-8 عرض الخدمات واستدعائها من خلال HTTP.
- ↑ Deinum et al. 2014 ، الصفحات 641-658، §14-10 مقدمة عن خدمات الويب SOAP التعاقدية أولاً، §14-11 عرض واستدعاء خدمات الويب SOAP باستخدام Spring-WS، §14-12 تطوير خدمات الويب SOAP باستخدام Spring-WS و XML Marshalling.
- ↑ جونسون وآخرون 2005 ، الفصل §8 - التحكم عن بعد خفيف الوزن.
- 1 2 جونسون وآخرون 2005 ، الفصل §9 - الخدمات الداعمة.
- ^ دينوم وآخرون. 2014 ، ص. 475، §11 إدارة المعاملات الربيعية.
- ↑ Deinum et al. 2014 ، ص. 591 ، §14 خدمات Spring Java Enterprise وتقنيات الاتصال عن بعد.
- ↑ Deinum et al. 2014 ، ص 737-739 ، §17-3 اختبار وحدة التحكم Spring MVC.
- ↑ Deinum et al. 2014 ، ص 739-743 ، §17-4 إدارة سياقات التطبيق في اختبارات التكامل.
- ↑ Musib 2022 ، ص. 358 ، §8.3 تقديم Spring WebFlux.
- ^ كوزمينا وآخرون. 2017 ، ص. 21-23.
- ↑ Cosmina et al. 2017 ، ص 24-25 ، §2 الوصول إلى وحدات Spring باستخدام Maven.
- ↑ Cosmina et al. 2017 ، ص. 26 ، §2 الوصول إلى وحدات Spring باستخدام Gradle.
- 1 2 Deinum et al. 2014 ، ص 53-62 ، §2-2 إنشاء POJOs عن طريق استدعاء Constructor.
- 1 2 Deinum et al. 2014 ، ص 48-52 ، §2-1 إدارة وتكوين POJOs باستخدام حاوية Spring IoC.
- ↑ Deinum et al. 2014 ، الصفحات 59-67 ، §2-3 استخدم مراجع POJO والتوصيل التلقائي والاستيراد للتفاعل مع POJOs الأخرى.
- ↑ Deinum et al. 2014 ، ص 112-116 ، §2-16 استخدم محررات الخصائص في الربيع.
- 1 2 Walls 2019 ، ص 4-6 ، §1.1 البدء مع الربيع - ما هو الربيع.
- ^ كوزمينا وآخرون. 2017 ، ص. 37، §3 تقديم IoC وDI في الربيع.
- ↑ ما الفرق بين البحث عن التبعيات وحقن التبعيات؟ - منتدى سبرينغ . Forum.springsource.org (2009-10-28). تم الاطلاع عليه بتاريخ 2013-11-24.
- ↑ Deinum & Cosmina 2021 ، ص 26-32 ، §2 أساسيات إطار عمل Spring - حقن التبعية.
- 1 2 جونسون وهويلر 2004 ، ص 135-137 ، §6 الحاويات خفيفة الوزن وانعكاس التحكم - حاويات IOC.
- ↑ Deinum et al. 2014 ، ص 145-151 ، §3-3 استخدم مراجع POJO والتوصيل التلقائي للتفاعل مع POJOs الأخرى.
- 1 2 3 Cosmina et al. 2017 ، ص 112-120 ، §3 تقديم IoC و DI في Spring - Autowiring Your Beans.
- 1 2 3 دينوم وآخرون. 2014 ، الصفحات من 151 إلى 154، §3-4 التوصيل التلقائي لـ POJOs في التعليق التوضيحي @Resource وInject.
- ↑ Deinum et al. 2014 ، ص 99-104 ، §2-12 البرمجة الموجهة نحو الجوانب.
- 1 2 3 Deinum et al. 2014 ، ص 492-494 ، §11-6 إدارة المعاملات بشكل تصريحي باستخدام التعليق التوضيحي @Transactional.
- ↑ Deinum et al. 2014 ، ص 509-510 ، §11-11 إدارة المعاملات باستخدام نسج وقت التحميل.
- ↑ تكوين Spring AOP XML
- ↑ تكوين التعليقات التوضيحية لـ AspectJ
- ↑ Deinum et al. 2014 ، ص 441-446 ، §10-5 معالجة الاستثناءات في إطار عمل Spring JDBC.
- ^ دينوم وآخرون. 2014 ، ص 426-441، 463-465.
- ↑ مقارنة بين Hibernate و Spring
- ↑ Deinum et al. 2014 ، ص 463-466 ، §10-8 استمرار الكائنات باستخدام قوالب ORM الخاصة بـ Spring.
- ↑ Deinum et al. 2014 ، ص 446-462 ، §10-6 مشاكل استخدام أطر ORM مباشرة.
- ↑ "Spring Data JPA لتجريد الاستعلامات" . 6 فبراير 2018. تم الاطلاع عليه بتاريخ 2018-02-06 .
- 1 2 Deinum et al. 2014 ، ص 456-460 ، §10-7 تكوين مصانع موارد ORM في Spring.
- 1 2 3 4 Deinum et al. 2014 ، ص 464-468 ، §11-2 اختيار تنفيذ مدير المعاملات.
- 1 2 Deinum et al. 2014 ، ص 494-499 ، §11-7 تحديد سمة معاملة الانتشار.
- ↑ Deinum et al. 2014 ، ص 482-484 ، §11-2 اختيار تنفيذ مدير المعاملات.
- ↑ Deinum et al. 2014 ، ص 484-486 ، §11-3 إدارة المعاملات برمجيًا باستخدام واجهة برمجة تطبيقات مدير المعاملات.
- ↑ Deinum et al. 2014 ، ص 486-489 ، §11-4 إدارة المعاملات برمجياً باستخدام قالب المعاملات.
- ↑ Deinum et al. 2014 ، ص 677–685 ، §15-4 إنشاء POJOs مدفوعة بالرسائل في Spring.
- ↑ Deinum et al. 2014 ، ص 685-686 ، §15-5 اتصالات JMS المخزنة مؤقتًا والمجمعة.
- ↑ "مقدمة إلى إطار عمل Spring" . مؤرشف من الأصل بتاريخ 30-06-2019.
- ↑ جونسون، تصميم وتطوير J2EE فردي مع خبير، الفصل 12. وآخرون.
- ↑ أنماط بنية تطبيقات المؤسسات: وحدة التحكم الأمامية
- 1 2 3 4 5 6 7 Deinum et al. 2014 ، ص 217-232 ، §4-1 تطوير تطبيق ويب بسيط باستخدام Spring MVC.
- ↑ Deinum & Cosmina 2021 ، ص 82-83 ، §4 Spring MVC Architecture - ملخص معالجة الطلبات.
- ↑ Deinum et al. 2014 ، ص 217-219 ، §4-1 تطوير تطبيق ويب بسيط باستخدام Spring MVC.
- ↑ Walls 2019 ، ص 18-19.
- 1 2 Deinum et al. 2014 ، ص 236-239 ، §4-3 اعتراض الطلبات باستخدام معترضات المعالج.
- ^ دينوم وآخرون. 2014 ، الصفحات من 239 إلى 240، §4-4 حل لغات المستخدم.
- ↑ Deinum & Cosmina 2021 ، الصفحات 75-76 ، §4 Spring MVC Architecture - إعداد طلب.
- 1 2 Deinum et al. 2014 ، ص 243-247 ، §4-6 حل طرق العرض بالأسماء.
- ↑ Deinum & Cosmina 2021 ، ص 81 ، §4 Spring MVC Architecture - Render a view.
- ^ دينوم وآخرون. 2014 ، ص. 723، §17 اختبار الربيع.
- 1 2 3 Deinum & Cosmina 2021 ، ص 73-74 ، §4 Spring MVC Architecture - DispatcherServlet Request Processing Workflow.
- 1 2 Walls 2019 ، ص 35.
- 1 2 3 4 5 6 Deinum & Cosmina 2021 ، ص 84-90 ، §4 Spring MVC Architecture - Bootstrapping DispatcherServlet.
- 1 2 3 Deinum et al. 2014 ، ص 627-632 ، §14-7 عرض الخدمات واستدعائها من خلال RMI.
- 1 2 Deinum et al. 2014 ، ص 632-635 ، §14-8 عرض الخدمات واستدعائها من خلال HTTP.
- ↑ Deinum et al. 2014 ، ص 692-694 ، §16-1 دمج نظام واحد مع آخر باستخدام EAI.
- 1 2 Deinum et al. 2014 ، ص 635-641 ، §14-9 عرض واستدعاء خدمات الويب SOAP باستخدام JAX-WS.
- 1 2 Walls 2016 ، ص. السابع ، §مقدمة.
- ↑ "Spring Boot" . spring.io.
- ↑ Walls 2016 ، ص 48 ، §2.4.
- ^ دينوم وكوزمينا 2021 ، الصفحات من 21 إلى 22، §2 أساسيات إطار الربيع.
- ↑ Walls 2016 ، ص 37-48 ، §2.3.
- 1 2 Walls 2016 ، ص. 7 ، §1.1.3.
- 1 2 Walls 2016 ، ص. س، §مقدمة.
- ↑ Walls 2016 ، ص 4-5 ، §1.1.2.
- 1 2 Walls 2016 ، ص 124–139 ، §7.
- ↑ Walls 2016 ، ص 49-69 ، §3.1-§3.2.3.
- ↑ "حول Spring Boot" . تم الاطلاع عليه بتاريخ 18-03-2020 .
- 1 2 3 دينوم وآخرون. 2014 ، ص 536-541، §12-7 التحكم في تنفيذ الخطوة.
- ↑ Deinum et al. 2014 ، ص 714-717 ، §16-9 أحداث المرحلة باستخدام Spring Batch.
- 1 2 3 Deinum et al. 2014 ، ص 518-524 ، §12-2 القراءة والكتابة.
- ^ دينوم وآخرون. 2014 ، الصفحات من 511 إلى 512، §12 دفعة الربيع.
- ↑ Deinum et al. 2014 ، ص 713-714 ، §16-8 التوجيه المشروط مع أجهزة التوجيه.
- ↑ Deinum et al. 2014 ، ص 704-707 ، §16-5 تحويل الرسالة من نوع إلى آخر.
- ↑ Deinum et al. 2014 ، ص 686-690 ، §15-6 إرسال واستقبال رسائل AMQP باستخدام Spring.
- ↑ Deinum et al. 2014 ، ص 613-620، §14-4 إرسال بريد إلكتروني باستخدام دعم البريد الإلكتروني من Spring.
- ↑ Deinum et al. 2014 ، ص 406 ، §9-2 استخدام Spring في Servlets و Filters الخاصة بك.
- ↑ Deinum et al. 2014 ، ص 695-698 ، §16-2 دمج نظامين باستخدام JMS.
- ^ دينوم وآخرون. 2014 ، ص 717-722، §16-10 استخدام البوابات.
- 1 2 Deinum et al. 2014 ، ص 710-713 ، §16-7 التحكم في التكامل المتفرع: المقسمات والمجمعات.
- 1 2 3 4 Deinum & Cosmina 2021 ، ص 422-425 ، §11 بروتوكول WebSocket.
- ↑ Deinum & Cosmina 2021 ، ص 425-432 ، §11 بروتوكول WebSocket.
- ↑ Deinum & Cosmina 2021 ، ص. 369 ، §10 بناء التطبيقات التفاعلية باستخدام Spring WebFlux.
- 1 2 Deinum & Cosmina 2021 ، ص. 421 ، §11 تأمين تطبيقات Spring WebFlux.
- ↑ الربيع مقابل EJB3
- ↑ "أسئلة وأجوبة حول موقع Pitchfork" . تم الاطلاع عليه بتاريخ 2006-06-06 .
- ↑ "Spring4Shell: ثغرة أمنية خطيرة في Spring - مدونة كاسبرسكي الرسمية" . أبريل 2022.
- ↑ تشيرجوين، ريتشارد (4 أبريل 2022). "VMware تُفاجأ بثغرة Spring4shell" . itnews.com.au. مؤرشف من الأصل في 13 فبراير 2024. تم الاطلاع عليه في 13 فبراير 2024 .
مراجع
- كوزمينا، يوليانا؛ هاروب، روب. شيفر، كريس. هو ، كلارنس (2017). برو الربيع 5 . بيركلي، كاليفورنيا: أبريل. دوى : 10.1007/978-1-4842-2808-1 . رقم ISBN 978-1-4842-2807-4.
- دينوم، مارتن؛ كوزمينا، يوليانا (2021). Pro Spring MVC مع WebFlux . بيركلي، كاليفورنيا: أبريل. دوى : 10.1007/978-1-4842-5666-4 . رقم ISBN 978-1-4842-5665-7.
- دينوم، مارتن؛ لونغ، جوش؛ ماك، غاري؛ روبيو، دانيال (2014). وصفات الربيع . بيركلي، كاليفورنيا: أبريس. doi : 10.1007/978-1-4302-5909-1 . ISBN 978-1-4302-5908-4.
- جونسون، رود؛ هولر، يورغن؛ أريندسن، أليف؛ ريسبيرغ، توماس؛ سامباليانو، كولين (8 يوليو 2005). تطوير تطبيقات جافا الاحترافية باستخدام إطار عمل سبرينغ ( الطبعة الأولى). دار نشر وروكس . ص 672. ISBN 0-7645-7483-3.
- هاروب، روب. ماتششيك ، يناير (31 يناير 2005). برو سبرينج (الطبعة الأولى ). أبريس . ص. 832. ردمك 1-59059-461-4.
- جونسون، رود؛ يورغن، هولر (23 أكتوبر 2002). تطوير J2EE بدون EJB ( الطبعة الأولى). دار نشر Wrox . ص 768. ISBN 0-7645-5831-5.
- جونسون ، رود؛ يورغن، هولر (أكتوبر 2002). تصميم وتطوير تطبيقات J2EE من منظور خبير ( الطبعة الأولى). دار نشر وروكس . ص 750. ISBN 0-7645-4385-7.
- جونسون، رود. هولر، يورغن (2004). تطوير خبير واحد لواحد J2EE بدون EJB . إنديانابوليس، إنديانا: وايلي. رقم ISBN 978-0-7645-5831-3.
- موسيب، سومناث (12 يوليو 2022). حذاء الربيع عمليًا . سايمون وشوستر. ISBN 978-1-61729-881-3.
- بولاك، مارك؛ جيرك، أوليفر؛ ريسبيرج، توماس؛ بريسبين، جون؛ هانغر، مايكل (31 أكتوبر 2012). بيانات الربيع ( الطبعة الأولى). أورايلي . ص 316. ISBN 978-1449323950.
- سارين، أشيش (27 يونيو 2016). البدء باستخدام إطار عمل سبرينغ ( الطبعة الثالثة). منشور ذاتيًا . ص 626. ISBN 978-1534985087.
- لونغ، جوش (27 أغسطس 2013). دروس مباشرة في إطار عمل سبرينغ ( الطبعة الأولى). أديسون-ويسلي بروفيشنال . 4+ ساعات. ISBN 978-0-13-346307-1.
- والز، كريج (3 يناير 2016). حذاء الربيع في العمل . مانينغ . ISBN 978-1-61729-254-5.
- والز، كريج (2019). الربيع في الحركة . مانينغ . ISBN 978-1-61729-494-5.
- جائزة جاكس للابتكار لعام 2006. مؤرشفة من الأصل بتاريخ 17 أغسطس 2009. تم الاطلاع عليها بتاريخ 12 أغسطس 2009 .
- "أسئلة وأجوبة حول موقع Pitchfork" . تم الاطلاع عليه بتاريخ 2006-06-06 .
- "الإعلان عن الإصدار العام من Spring Framework 4.0" . مدونة Spring. 12 ديسمبر 2013.
- "التوفر العام لإطار عمل Spring 7.0" . مدونة Spring. 13 نوفمبر 2025.
روابط خارجية
- البرمجة الموجهة نحو الجوانب
- مكتبات لغة البرمجة جافا
- منصة جافا للمؤسسات
- برنامج يستخدم ترخيص أباتشي
- أطر عمل الويب
