מה חדש באביב המגף 2?

1. סקירה כללית

Spring Boot מביא גישה דעתנית למערכת האקולוגית של Spring. פורסם לראשונה באמצע 2014. Spring Boot עבר הרבה פיתוח ושיפור. גרסת 2.0 שלה מתכוננת היום לשחרור בתחילת 2018.

ישנם אזורים שונים בהם הספרייה הפופולרית הזו מנסה לעזור לנו:

  • ניהול תלות. באמצעות מנות פתיחה ושילובים שונים של מנהל החבילות
  • תצורה אוטומטית. ניסיון למזער את כמות התצורה שאפליקציית אביב דורשת להתכונן לדרך ולהעדיף מוסכמות על פני תצורה
  • תכונות מוכנות לייצור. כמו מַפעִיל, רישום טוב יותר, ניטור, מדדים או שילוב של PAAS שונים
  • חווית פיתוח משופרת. עם כלי בדיקה מרובים או שימוש בלולאת משוב טובה יותר אביב-אתחול-מכשירי עזר

במאמר זה נחקור כמה שינויים ותכונות המתוכננים עבור Spring Boot 2.0. נתאר גם כיצד שינויים אלה עשויים לעזור לנו להיות פרודוקטיביים יותר.

2. תלות

2.1. קו בסיסי של Java

Spring Boot 2.x כבר לא יתמוך בג'אווה 7 ומטה, בהיותו Java 8 הדרישה המינימלית.

זו גם הגרסה הראשונה שתומכת בג'אווה 9. אין תוכניות לתמוך בג'אווה 9 בסניף 1.x. זה אומר אם אתה רוצה להשתמש במהדורת Java האחרונה ולנצל את המסגרת הזו, Spring Boot 2.x הוא האפשרות היחידה שלך.

2.2. שטר חומרים

עם כל מהדורה חדשה של Spring Boot, גרסאות של תלות שונות במערכת האקולוגית של Java משודרגות. זה מוגדר ב- Boot שטר חומרים aka BOM.

ב- 2.x זה לא יוצא מן הכלל. זה לא הגיוני לרשום אותם, אבל אנחנו יכולים להסתכל על זה spring-boot-dependencies.pom כדי לראות באילו גרסאות משתמשים בכל נקודת זמן נתונה.

כמה דגשים לגבי גרסאות מינימליות הנדרשות:

  • הגרסה המינימלית הנתמכת של Tomcat היא 8.5
  • הגרסה המינימלית שנתמכת במצב שינה היא 5.2
  • הגרסה המינימלית הנתמכת של Gradle היא 3.4

2.3. תוסף Gradle

התוסף של Gradle עבר שיפור משמעותי וכמה שינויים שבורים.

כדי ליצור צנצנות שומן, bootRepackage המשימה של Gradle מתחלפת ב bootJar ו bootWar לבנות צנצנות ומלחמות בהתאמה.

אם היינו רוצים להריץ את היישומים שלנו עם התוסף Gradle, ב- 1.x, היינו יכולים לבצע אתחול דרגה הפעל.ב- 2.x bootRun מאריך את גרדל JavaExec. זה מרמז שקל לנו יותר להגדיר את התצורה של אותה תצורה בה אנו משתמשים בדרך כלל בקלאסיקה JavaExec משימות.

לפעמים אנו מוצאים עצמנו רוצים לנצל את Spring Boot BOM. אבל לפעמים אנחנו לא רוצים לבנות אפליקציית אתחול מלאה או לארוז אותה מחדש.

בעניין זה מעניין לדעת זאת Spring Boot 2.x כבר לא יחיל את התוסף לניהול תלות כברירת מחדל.

אם אנו רוצים ניהול תלות באביב, עלינו להוסיף:

החל תוסף: 'io.spring.dependency-management'

זה נותן לנו גמישות רבה יותר עם פחות תצורה בתרחיש הנ"ל.

3. תצורה אוטומטית

3.1. בִּטָחוֹן

ב- 2.x תצורת האבטחה מפשטת באופן דרמטי. כברירת מחדל, הכל מאובטח, כולל משאבים סטטיים ונקודות קצה של מפעיל.

לאחר שהמשתמש מגדיר את האבטחה באופן מפורש, ברירות המחדל של Spring Boot יפסיקו להשפיע. לאחר מכן המשתמש יכול להגדיר את כל כללי הגישה במקום אחד.

זה ימנע מאיתנו להיאבק מתאם WebSecurityConfigurer הזמנת בעיות. בעיות אלה היו קורות בדרך כלל כאשר מגדירים את כללי האבטחה של Actuator ו- App באופן מותאם אישית.

בואו נסתכל על קטע אבטחה פשוט המשלב בין כללי מפעיל ליישום:

http.authorizeRequests () .requestMatchers (EndpointRequest.to ("health")) .permitAll () // כללי מפעיל לפי נקודת סיום .requestMatchers (EndpointRequest.toAnyEndpoint ()) .hasRole ("admin") // הכללים הכלליים של המפעיל .requestMatchers (PathRequest.toStaticResources (). AtCommonLocations ()) .permitAll () // אבטחת משאבים סטטית .antMatchers ("/ **"). HasRole ("משתמש") // כללי אבטחת יישומים // ...

3.2. תמיכה תגובתי

Spring Boot 2 מביא קבוצה של סטרטרים חדשים למודולים תגוביים שונים. כמה דוגמאות הן WebFlux, והמקבילים המגיבים עבור MongoDB, Cassandra או Redis.

ישנם גם כלי בדיקה עבור WebFlux. בפרט, אנו יכולים לנצל @WebFluxTest. זה מתנהג באופן דומה לזה שישן יותר @WebMvcTest הוצג במקור כחלק מהבדיקות השונות פרוסות חזרה ב 1.4.0.

4. תכונות מוכנות לייצור

Spring Boot מביא כמה כלים שימושיים המאפשרים לנו ליצור יישומים מוכנים לייצור. בין היתר אנו יכולים לנצל את Spring Boot Actuator.

Actuator מכיל כלים שונים לפשט ניטור, מעקב והתבוננות כללית באפליקציות. פרטים נוספים על מפעיל ניתן למצוא במאמר הקודם שלנו.

עם גרסתו 2 מַפעִיל עבר שיפורים משמעותיים. איטרציה זו מתמקדת בפשטות התאמה אישית. הוא תומך גם בטכנולוגיות אינטרנט אחרות, כולל המודול תגובתי החדש.

4.1. תמיכה טכנולוגית

באביב אתחול 1.x נתמך רק Spring-MVC עבור נקודות קצה של מפעיל. ב- 2.x, לעומת זאת, הוא הפך לעצמאי וניתוח. מגף האביב מביא כעת תמיכה מהקופסה ל- WebFlux, Jersey ו- Spring-MVC.

כמו בעבר, JMX נשאר אופציה וניתן להפעיל או להשבית באמצעות תצורה.

4.2. יצירת נקודות קצה מותאמות אישית

תשתית המפעיל החדשה היא אגנוסטית טכנולוגית. בגלל זה, דגם הפיתוח תוכנן מחדש מאפס.

המודל החדש מביא גם לגמישות וביטוי רב יותר.

בואו נראה איך ליצור פירות נקודת קצה למפעיל:

@Endpoint (id = "fruits") מחלקה ציבורית FruitsEndpoint {@ReadOperation public map fruits () {...} @WriteOperation public void addFruits (@Selector String name, Fruit Fruit) {...}}

ברגע שאנחנו נרשמים FruitsEndpoint בשלנו ApplicationContext, זה יכול להיחשף כנקודת קצה באינטרנט באמצעות הטכנולוגיה שבחרנו. אנו יכולים גם לחשוף אותו באמצעות JMX בהתאם לתצורה שלנו.

תרגום נקודת הקצה שלנו לנקודות קצה באינטרנט, הדבר יביא ל:

  • לקבל עַל / יישום / פירות מחזירים פירות
  • הודעה עַל / יישומים / פירות / {a-fruit} טיפול בפרי זה שצריך לכלול בעומס המטען

יש עוד הרבה אפשרויות. נוכל לאחזר נתונים פרטניים יותר. כמו כן, נוכל להגדיר יישומים ספציפיים לכל טכנולוגיה בסיסית (למשל, JMX לעומת אינטרנט). לצורך המאמר נשמור עליו כהקדמה פשוטה מבלי לפרט יותר מדי.

4.3. אבטחה במפעיל

ב- Spring Boot 1.x Actuator מגדיר מודל אבטחה משלו. מודל אבטחה זה שונה מזה ששימוש היישום שלנו.

זה היה השורש לנקודות כאב רבות כאשר משתמשים ניסו לחדד את האבטחה.

ב- 2.x יש להגדיר את תצורת האבטחה באמצעות אותה תצורה שבה שאר היישומים משתמשים.

כברירת מחדל, רוב נקודות הקצה של המפעיל מושבתות. זה לא תלוי אם אבטחת האביב נמצאת בכיתה או לא. מעבר סטָטוּס ו מידע, כל נקודות הקצה האחרות צריכות להיות מופעלות על ידי המשתמש.

4.4. שינויים חשובים אחרים

  • רוב מאפייני התצורה נמצאים כעת תחת management.xxx לְמָשָׁל.: management.endpoints.jmx
  • לחלק מנקודות הקצה יש פורמט חדש. לְמָשָׁל.: env, flyway אוֹ liquibase
  • כבר לא ניתן להגדיר נתיבי נקודת קצה מוגדרים מראש

5. חווית פיתוח משופרת

5.1. משוב טוב יותר

מגף אביב הוצג devtools ב- 1.3.

הוא דואג להחלקת בעיות פיתוח אופייניות. למשל, אחסון במטמון בטכנולוגיות תצוגה. הוא גם מבצע הפעלה מחדש אוטומטית וטעינה מחדש של הדפדפן. כמו כן, זה מאפשר לנו לבצע ניפוי באגים באפליקציות.

ב- 2.x כאשר היישום שלנו יופעל מחדש על ידי devtools דוח 'דלתא' יודפס. דוח זה יציין מה השתנה וההשפעה שיכולה להיות על היישום שלנו.

נניח שאנחנו מגדירים מקור נתונים JDBC העוקף את זה שהוגדר על ידי Spring Boot.

דevtools יציין שהמוגדר האוטומטי כבר לא נוצר. זה גם יציין את הסיבה, התאמה שלילית ב @ConditionalOnMissingBean לסוג javax.sql.DataSource. דevtools ידפיס דוח זה לאחר ביצוע ההפעלה מחדש.

5.2. שינויים שוברים

בשל בעיות JDK 9, devtools מורידה את התמיכה באגים מרחוק באמצעות HTTP.

6. סיכום

במאמר זה סקרנו כמה מהשינויים שיבוא Boot Boot 2.

דנו בתלות וכיצד Java 8 הופכת לגרסה המינימלית הנתמכת.

לאחר מכן, דיברנו על תצורה אוטומטית. התמקדנו בין היתר בביטחון. דיברנו גם על מפעיל ועל השיפורים הרבים שקיבל.

לבסוף, דיברנו על כמה שינויים קלים שהתרחשו בכלי הפיתוח הניתנים.