تم إصدار Spring 5 في أواخر عام 2017. يأتي Spring 5 بتحديث ضخم لإطار العمل Spring. تم إصدار Spring 4 في عام 2013، لذا كان الجميع يتوقع تحديثاً كبيراً للإطار العمل. أنا سعيد جداً برؤية الميزات الجديدة في إطار العمل Spring.
ميزات Spring 5
يمكن تقسيم ميزات Spring 5 بشكل عام إلى الفئات التالية:
- دعم Baseline للغة Java
- تحسينات في واجهة برمجة التطبيقات الأساسية
- تحسينات في واجهة برمجة التطبيقات الويب لـ Spring MVC
- Spring WebFlux
- برمجة وظيفية بدعم Kotlin
- تحسينات في الاختبارات
- دعم الميزات المهجورة والحزم التي تمت إزالتها
دعم Baseline للغة Java
- يعمل Spring 5 على Java 8، لذلك يمكن لكود Spring الاستفادة من تعابير اللامبدا لتحسين قراءة الكود.
- تدعم Spring 5 أيضًا Java 9، لذا يمكننا إنشاء تطبيقاتنا على أساس بنية الوحدة أيضًا.
- يدعم Spring 5 Java EE 7 ومتوافق أيضًا مع Java EE 8. لذا يمكننا استخدام Servlet 4.0، Bean Validation 2.0، JPA 2.2 في تطبيقاتنا. يمكننا أيضًا استخدام نسخها القديمة، أي Servlet 3.1، Bean Validation 1.1، JPA 2.1.
- إصدارات Spring 5 المفضلة لتشغيل التطبيقات هي Tomcat 8.5+، Jetty 9.4+، و WildFly 10+.
I really like that spring 5 is trying to catch up to the latest version of different technologies.
تحسينات في واجهة البرمجة الأساسية
- إعلان API غير قابل للقبول في مستوى الحزمة. يتم تعليمياً تحديد الوسائط والحقول وقيم العودة القابلة للفوالد بتسمية
@Nullable
. - تتم عمليات الملفات عبر تيارات NIO 2 أي بدون تيارات FileInput/Output. هذا تحسين كبير وزيادة في الأداء لتطبيقات الملفات.
- يأتي إصدار Spring Framework 5.0 مع جسر تسجيل Commons Logging الخاص به؛
spring-jcl
بدلاً من Commons Logging القياسي. - دعم لتوفير معلومات مكونات spring من خلال ملف الفهرس “META-INF/spring.components” بدلاً من فحص مسار الفئات. سيحسن هذا الوقت في بدء التشغيل كثيرًا إذا كان لديك مشروع spring كبير والعديد من مكونات spring. سيكون أفضل أيضًا للمطورين، لأننا يمكننا البحث مباشرة في الملفات المحددة لمعرفة نقطة الدخول إلى التطبيق بدلاً من البحث في جميع ملفات مسار الفئة.
تحسينات Spring Web MVC
حصلت وحدة Spring MVC على تحسينات كبيرة فيما يتعلق باستخدام أحدث تقنيات Java EE. وفيما يلي بعض التحسينات الرئيسية:
- دعم الإمضاء الكامل لـ Servlet 3.1 في تنفيذات
Filter
المقدمة من Spring. - دعم لمتغير
PushBuilder
من Servlet 4.0 في أساليب تحكم Spring MVC. - MaxUploadSizeExceededException لتحليل التجزئة multipart في Servlet 3.0 على الخوادم الشائعة.
- دعم موحد لأنواع الوسائط الشائعة من خلال وكيل MediaTypeFactory.
- ربط البيانات مع الكائنات الغير قابلة للتغيير باستخدام Kotlin، Lombok، @ConstructorProperties.
- دعم لـ واجهة برمجة التطبيقات للتسلسل JSON كبديل لـ Jackson و GSON.
- دعم لـ Reactor 3.1 Flux و Mono بالإضافة إلى RxJava 1.3 و 2.1 كقيمة إرجاع من أساليب تحكم Spring MVC.
- دعم لـ
ResponseStatusException
كبديل برمجي لـ@ResponseStatus
.
Spring WebFlux
Spring WebFlux هو الوحدة الجديدة، إنه بديل لوحدة spring-webmvc
ومبني على إطار رد الفعل. تستخدم هذه الوحدة لإنشاء تطبيقات غير متزامنة تمامًا وغير قابلة للتوقف بنيوية تنفيذ حلقة الفعل.
- البنية التحتية الردية في spring-core مثل Encoder و Decoder لترميز وفك تشفير تيارات الكائنات.
- @Controller نمط البرمجة بناءً على التعليقات، نموذج برمجة قائم على التعليقات، مشابه لـ Spring MVC، ولكنه مدعوم في WebFlux، يعمل على حزمة رد الفعل.
- WebClient الجديد مع واجهة برمجة تطبيقات (API) واستجابية للمكالمات HTTP، يمكن مقارنته بـ RestTemplate ولكن من خلال واجهة برمجة تطبيقات (API) سلسة ويتفوق أيضًا في السيناريوهات غير القابلة للتوقف والتدفق بناءً على بنية WebFlux.
برمجة وظيفية مع دعم Kotlin
تدعم Spring 5 البرمجة بلغة Kotlin الآن أيضًا. هذه خطوة ضخمة نحو دعم البرمجة الوظيفية، تمامًا كما تتجه Java أيضًا نحو البرمجة الوظيفية.
- دعم لواجهة برمجة التطبيقات (API) آمنة من القيم الفارغة
- دعم لفئات Kotlin اللاقابلة للتغيير مع معلمات اختيارية وقيم افتراضية.
- استفادة من معلمات النوع المتقدمة في Kotlin لتجنب تحديد الفئة بوضوح للاستخدام في التسلسل/فك التسلسل في واجهات برمجة التطبيقات المختلفة مثل RestTemplate أو واجهات برمجة التطبيقات WebFlux.
- دعم لبناء Kotlin autowired مع معلمات اختيارية.
- دعم Kotlin لسلامة القيم الفارغة لتعليمات الـ @Autowired/@Inject و @RequestParam/@RequestHeader/وما إلى ذلك.
تحسينات في الاختبار
- دعم لـ JUnit 5
- دعم لتنفيذ الاختبار المتوازي في إطار Spring TestContext
الدعم المهجور والحزم المحذوفة
- تمت إزالة الحزم
beans.factory.access
,jdbc.support.nativejdbc
,mock.staticmock
من وحدةspring-aspects
. - تمت إزالة الحزم
web.view.tiles2
وorm.hibernate3/hibernate4
. هذا يعني إذا كنت تخطط لاستخدام Spring 5، فستحتاج أيضًا إلى استخدام Hibernate 5. - توقف الدعم عن التقنيات القديمة Portlet، Velocity، JasperReports، XMLBeans، JDO، Guava. إذا كنت تستخدم أيًا من هذه، فإما قم بالترحيل إلى تقنيات أخرى أو استمر مع Spring 4.
هذا كل شيء لنظرة سريعة على ميزات Spring 5. المرجع: وثائق Spring GitHub
Source:
https://www.digitalocean.com/community/tutorials/spring-5