רכיבים מרכזיים ופנים של מסגרת Spring Boot

בפוסט הקודם שלי “מבוא ל-Spring Boot”, דנו ביסודות של Spring Boot. כעת נדבר על "מהם הרכיבים העיקריים של Spring Boot" ו"איך Spring Boot פועלת מתחת למסך".

רכיבי מפתח של מסגרת Spring Boot

במסגרת של Spring Boot יש ארבעה רכיבים עיקריים.

  • מתחילי Spring Boot
  • מגדיר אוטומטית של Spring Boot
  • CLI של Spring Boot
  • פעולה של Spring Boot

הערה:- בנוסף לארבעת הרכיבים העיקריים אלה, ישנם עוד שני רכיבים של Spring Boot:

  • מאתחל Spring
  • סביבות פיתוח Spring Boot

כדי להתחיל מהירות פרויקטים חדשים של Spring Boot, נוכל להשתמש בממשק האינטרנט "Spring Initializr". כתובת ה-URL של Spring Initializr: https://start.spring.io. יש לנו הרבה סביבות פיתוח Spring Boot כמו Eclipse IDE, IntelliJ IDEA, Spring STS Suite וכו '. נדבר על שני הרכיבים אלה בפוסטים הבאים. עכשיו נדבר על ארבעת הרכיבים של Spring Boot בפרט.

התחלת Spring Boot

מאבטחי Spring Boot היא אחת התכונות או הרכיבים העיקריים של מסגרת Spring Boot. האחריות העיקרית של Starter של Spring Boot היא לשלב קבוצה של תלות רגילות או קשורות לתלות יחידה אחת. נבדוק בפרט את הצהרת המשימה הזו עם דוגמה אחת. לדוגמה, אנו רוצים לפתח אפליקצית Web של Spring עם שרת Web של Tomcat. אז נצטרך להוסיף את התלות המינימליות הבאות בקובץ pom.xml של Maven שלך או בקובץ build.gradle של Gradle

  • קובץ Jar של גרסת הקור של Spring (spring-core-xx.jar)
  • קובץ Jar של גרסת האינטרנט של Spring (spring-web-xx.jar)
  • קובץ Jar של MVC באינטרנט של Spring (spring-webmvc-xx.jar)
  • קובץ Jar של Servlet (servlet-xx.jar)

אם רוצים להוסיף משהו שקשור למסד נתונים, אז עלינו להוסיף קבצי Jar קשורים למסד נתונים כמו קובץ Jar של Spring JDBC, קבצי Jar של Spring ORM, קובץ Jar של Spring Transaction וכו'

  • קובץ Jar של Spring JDBC (spring-jdbc-xx.jar)
  • קובץ Jar של Spring ORM (spring-orm-xx.jar)
  • קובץ Jar של Spring Transaction (spring-transaction-xx.jar)

אנו צריכים להגדיר המון תלות בקבצי הבנייה שלנו. משימה מסורבלת וקשה למפתח. גם זה מגדיל את גודל קובץ הבנייה שלנו. מהו הפתרון למניעת הגדרה זו של התלות בקבצי הבנייה שלנו? הפתרון הוא רכיב Spring Boot Starter. רכיב Spring Boot Starter משלב את כל ה- JAR הקשורים לתוך קובץ JAR אחד כך שאנו יכולים להוסיף רק תלות בקובץ JAR אחד לקבצי הבנייה שלנו. במקום להוסיף יותר מ-4 קבצי JAR לקובץ הבנייה שלנו, אנו צריכים להוסיף רק קובץ JAR אחד ויחיד: קובץ JAR "spring-boot-starter-web". כאשר אנו מוסיפים תלות בקובץ JAR "spring-boot-starter-web" לקובץ הבנייה שלנו, אז תספק Spring Boot Framework את כל ה-JAR הדרושים ותוסיף אותם ל-Classpath של הפרויקט שלנו. באותה הדרך, קובץ JAR "spring-boot-starter-logging" טוען את כל קבצי התלות שלו כמו "jcl-over-slf4j, jul-to-slf4j,log4j-over-slf4j, logback-classic" ל-Classpath של הפרויקט שלנו.

יתרונות מרכזיים של Spring Boot Starter

  • Spring Boot Starter מפחית את הצורך בהגדרה של מספר רב של תלות ומפשט את תלות הבנייה של הפרויקט.
  • Spring Boot Starter פשוט את תלות הבנייה של הפרויקט.

זהו על רכיב Spring Boot Starter. נדבר עוד על כמה פרטים עם דוגמאות מ Spring Boot בפוסטים הבאים.

מפענח אוטומטי של Spring Boot

הרכיב החשוב הנוסף של מסגרת Spring Boot הוא Spring Boot AutoConfigurator. רוב דעתם של פלטפורמת Spring IO (מסגרת Spring) היא ש"כדי לפתח אפליקציה בעזרת Spring דורש הרבה הגדרות (בהן הגדרת XML או הגדרת הערות). אז איך לפתור את הבעיה הזו. הפתרון לבעיה הזו הוא Spring Boot AutoConfigurator. האחריות העיקרית של Spring Boot AutoConfigurator היא להפחית את ההגדרה של Spring. אם אנו מפתחים אפליקציות Spring בעזרת Spring Boot, אז לא נצטרך להגדיר הגדרת XML יחידה וכמעט כלל לא או מינימלית הגדרת הערות. רכיב ה- Spring Boot AutoConfigurator יטפל בספק את המידע הזה. לדוגמה, אם נרצה להכריז על אפליקציית Spring MVC באמצעות פלטפורמת Spring IO, אז נצטרך להגדיר הגדרות XML רבות כמו תצוגות, ממירי תצוגות וכו '. אך אם נשתמש במסגרת Spring Boot, אז לא נצטרך להגדיר את ההגדרות האלו של XML. Spring Boot AutoConfigurator יטפל בזה. אם נשתמש בקובץ JAR "spring-boot-starter-web" בקובץ הבנייה של הפרויקט שלנו, אז Spring Boot AutoConfigurator יפתור באופן אוטומטי את התצוגות, ממירי התצוגה וכו '. וכן Spring Boot יפחית את הגדרת ההערות. אם נשתמש בהערת @SpringBootApplication ברמת המחלקה, אז Spring Boot AutoConfigurator יוסיף באופן אוטומטי את כל ההערות הנדרשות לבייט-קוד של המחלקה הג'אווה. אם נציץ במסמך התיעוד של Spring Boot, נוכל למצוא את ההגדרה הבאה עבור @SpringBootApplication.

@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication

כלומר, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. זהו הכל על רכיב האוטומטי של Spring Boot AutoConfigurate. נדון בפרטים נוספים עם דוגמאות נוספות של Spring Boot בפוסטים הבאים. הערה:-

  • במילים פשוטות, מאפשר התחלת Spring Boot להפחית את תלויות הבנייה ומאפשר הגדרת Spring Boot AutoConfigurator את התצורה של Spring.
  • כפי שדיברנו, מתי שיש ל- Spring Boot Starter תלות ב- Spring Boot AutoConfigurator, Spring Boot Starter מפעיל אוטומטית את Spring Boot AutoConfigurator.

Spring Boot CLI

ממשק השורת פקודה של Spring Boot (CLI) הוא תוכנה של Spring Boot להרצת ובדיקת אפליקציות Spring Boot ממסוף הפקודות. כאשר אנו מפעילים אפליקציות Spring Boot באמצעות CLI, הוא משתמש פנימית ב- Spring Boot Starter וברכיבי האוטומטי של Spring Boot AutoConfigurate כדי לפתור את כל התלותות ולהריץ את האפליקציה. אפשר גם להריץ אפליקציות רשת Spring עם פקודות פשוטות של Spring Boot CLI. Spring Boot CLI הכניס פקודה חדשה בשם "spring" כדי להריץ סקריפטים Groovy ממסוף הפקודות. דוגמה לפקודת spring:

spring run HelloWorld.groovy

שלום עולם.groovy הוא קובץ סקריפט Groovy. דומה לקבצי מקור של Java שיש להם סיומת *.java, קבצי סקריפט Groovy יש להם סיומת *.groovy. הפקודה "spring" מבצעת את HelloWorld.groovy ויוצרת פלט. רכיב CLI של Spring Boot מחייב כמה שלבים כמו התקנת CLI, הגדרת CLI, פיתוח יישום קטן של Spring Boot ובדיקתו. לכן אנו הולכים להקדיש פוסט נוסף לדון בכך בפרטים עם דוגמאות מתמקדות ב Spring Boot. אנא הפנה לפוסט הבא שלי על Spring Boot CLI.

Spring Boot Actuator

רכיבי Spring Boot Actuator מספקים המון יכולות, אך שתי יכולות עיקריות הן

  • ספק נקודות סיום ליישומים של Spring Boot.
  • מדדי יישומים של Spring Boot.

כאשר אנו מפעילים את היישום שלנו באמצעות CLI של Spring Boot, Spring Boot Actuator מספק באופן אוטומטי את שם המאחסן כ "localhost" ומספר הפורט המוגדר כ "8080". אנו יכולים לגשת ליישום זה באמצעות נקודת סיום "https://localhost:8080/". אנו בעצם משתמשים בשיטות בקשת HTTP כמו GET ו-POST כדי לייצג נקודות סיום של ניהול באמצעות Spring Boot Actuator. נדון בפרטים נוספים אודות Spring Boot Actuator בפוסטים הבאים.

הפנימיה של מסגרת Spring Boot

זה תמיד מומלץ להבין איך הגרסה הפריימווירק Spring Boot מפחיתה תלותי הבניה, הגדרות Spring, וכדומה. אם אתה מכיר בשפת התכנות Groovy, אז כנראה שאתה מכיר רוב הדברים. ב-Groovy, אנו לא צריכים להוסיף יבואים מסוימים ואין צורך להוסיף תלות לפרוייקט Groovy. כאשר אנו מהדרים סקריפטים ב-Groovy Compiler (groovyc), הוא יוסיף אוטומטית את כל ההצהרות הברירתיות לייבוא ואז יהדר אותו. באותו אופן, שפת התכנות Groovy מכילה מתמקד פותר תלות JAR כדי לפתור ולהוסיף את כל הקבצים הדרושים לפרוייקט Groovy ל-classpath. הגרסה הפריימווירק Spring Boot משתמשת פנימית ב-Groovy כדי להוסיף קצת ברירות מחדל כמו הצהרות יבוא ברירתיות, אמצעי main() של האפליקציה וכדומה. כאשר אנו מפעילים סקריפטים Groovy מממשק השורת פקודה CLI, הוא משתמש באמצעי main() זה כדי להפעיל את אפליקציית Spring Boot.

Grape

ענבים הוא מנוהל התלות מוטמע. ענבים הוא מנהל תלות JAR המוטמע ב-Groovy. ענבים מאפשר לנו להוסיף במהירות תלות במאגר Maven למחלקת הפרויקט שלנו כדי להפחית את הגדרות קובץ הבניה. מודל התכנות של מסגרת Spring Boot מושג בעיקר ממודל התכנות של Groovy. בפנים של מסגרת Spring Boot תלוים פנימית שני הרכיבים המרכזיים אלו: Groovy וענבים. ניתן להסתכל על מסמך ההוראות של ענבים https://docs.groovy-lang.org/latest/html/documentation/grape.html לקבלת פרטים נוספים. וזהו, זה כל הדבר על רכיבי ספרינג והפנימיה. נדון בפרטים על אלו עם דוגמאות מסגרת Spring Boot בפוסטים הבאים. אם יש לך שאלות, אנא השאירו לי תגובה.

Source:
https://www.digitalocean.com/community/tutorials/key-components-and-internals-of-spring-boot-framework