ספרינג 5

Spring 5 יצא לאור בסוף 2017. Spring 5 מביא עדכון עצום למערכת ה- Spring. Spring 4 יצא ב-2013, ולכן כולם ציפו לשיפור גדול של המערכת. אני מאוד שמח לראות את התכונות החדשות במערכת ה- Spring.

תכונות של Spring 5

תכונות של Spring 5 ניתן לחלק לרבים קטגוריות הבאות:

  • תמיכה בבסיס Java
  • שיפורים ב- Core API
  • שיפורים ב- Spring Web MVC
  • Spring WebFlux
  • תמיכה בתכנות פונקציונלי עם Kotlin
  • שיפורים בבדיקות
  • תמיכה בסוגריים והסרת חבילות מופטרות

תמיכה בבסיס Java

  • Spring 5 רץ על Java 8, כך שניתן להשתמש בביטויי למבדה כדי לשפר קריאות בקוד.
  • 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 Stream. זהו שדרוג נהדר ודגם ביצועים ליישומים המבוססים על קבצים.
  • ה-Spring Framework 5.0 מגיע עם גשר משלו ל־Commons Logging; spring-jcl במקום Commons Logging הרגיל.
  • תמיכה בספק מידע על רכיבי Spring דרך קובץ אינדקס "META-INF/spring.components" במקום סריקה של מעבר קובץ ה-Classpath. זה ישפר מאוד את זמן האתחול אם יש לך פרויקט Spring גדול והרבה רכיבי Spring. זה יהיה טוב גם למפתחים, כי אנו יכולים לבדוק ישירות בקבצים המסוימים כדי לזהות נקודת כניסה ליישום במקום לחפש בכל רחבי קבצי ה-Classpath.

שיפורי Spring Web MVC

מודול ה- MVC של Spring עבר שדרוג ראשי ביצור שימוש בטכנולוגיות Java EE העדכניות ביותר. חלק מהשדרוגים המרכזיים הם:

  • תמיכה מלאה בחתימת Servlet 3.1 במימושי Filter שנספקו על ידי Spring.
  • תמיכה בארגומנט PushBuilder של Servlet 4.0 בשיטות השליטה של Spring MVC.
  • MaxUploadSizeExceededException עבור פירוק מרכיבי multipart ב-Servlet 3.0 על שרתים רגילים.
  • תמיכה מאוחדת בסוגי מדיה נפוצים דרך משובץ MediaTypeFactory.
  • קישור נתונים עם אובייקטים לא משתנים באמצעות Kotlin, Lombok, @ConstructorProperties.
  • תמיכה ב-ממשק ה- JSON Binding API כאלטרנטיבה ל-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 reified type parameters למניע מפרט באופן ספציפי את ה-Class לשימוש בסדרת APIs שונות כמו RestTemplate או WebFlux APIs.
  • תמיכה בבנאי Kotlin המזוהה עם פרמטרים אופציונליים.
  • תמיכה בבטיחות מזהה של Kotlin עבור @Autowired/@Inject ו @RequestParam/@RequestHeader/הערות כדוגמת זו.

שיפורים בבדיקות

  • תמיכה ב-JUnit 5
  • תמיכה בביצוע בדיקות מקבילי ב-Spring TestContext Framework

תמיכה מושבתת וחבילות שהוסרו

  • חבילות הוסרו 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. התייחסות: מסמך GitHub של Spring

Source:
https://www.digitalocean.com/community/tutorials/spring-5