שאלות על ראיון אתחול האביב

1. הקדמה

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

במדריך זה נסקור כמה מהשאלות הנפוצות ביותר הקשורות לאביב המגף שעשויות לעלות במהלך ראיון עבודה.

2. שאלות

שאלה 1. מהו מגף האביב ומה התכונות העיקריות שלו?

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

להלן מספר תכונות בולטות:

  • מנות ראשונות - קבוצה של מתארי תלות שיכללו תלות רלוונטיות תוך כדי תנועה
  • תצורה אוטומטית - דרך להגדיר באופן אוטומטי יישום על סמך התלות הקיימת במסלול הכיתה
  • מפעיל - לקבל תכונות מוכנות לייצור כגון ניטור
  • בִּטָחוֹן
  • רישום

שאלה 2. מהם ההבדלים בין אביב ומגף אביב?

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

עם השנים אביב הופך מורכב יותר ויותר, וכמות התצורה שדורשת יישום כזה יכולה להיות מאיימת. זה המקום בו אביב המגף יועיל - זה הופך את תצורת יישום האביב לרוח.

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

להלן שניים מהיתרונות החשובים ביותר שמקפיץ אתחול:

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

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

שאלה 3. כיצד נוכל להגדיר יישום אתחול האביב עם Maven?

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

ירושה של אביב-אתחול-המתנע-הורה הפרויקט הוא פשוט - עלינו רק לציין א הוֹרֶה אלמנט ב pom.xml:

 org.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE 

אנו יכולים למצוא את הגרסה האחרונה של אביב-אתחול-המתנע-הורה במרכז מייבן.

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

שאלה 4. מה זה Spring Initializr?

Spring Initializr הוא דרך נוחה ליצור פרויקט Spring Boot.

אנו יכולים ללכת לאתר Spring Initializr, לבחור כלי לניהול תלות (Maven או Gradle), שפה (Java, Kotlin או Groovy), ערכת אריזה (Jar או War), גרסה ותלות ולהוריד את הפרויקט.

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

גם כאשר אנו משתמשים באשף הפרויקט החדש שלנו (כגון STS או Eclipse עם תוסף STS) ליצירת פרויקט Spring Boot, הוא משתמש באביב Initializr מתחת למכסה המנוע.

ש 5. אילו מתחילים למגפי האביב קיימים שם בחוץ?

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

כל המתחילים נמצאים תחת org.springframework.boot הקבוצה ושמותיהם מתחילים ב אביב-מגף-המתנע-. דפוס שמות זה מקל על מציאת סטרטרים, במיוחד בעבודה עם IDE התומכים בחיפוש תלות לפי שמות.

בזמן כתיבת שורות אלה עומדים לרשותנו יותר מ -50 מנות פתיחה. הנפוצים ביותר הם:

  • אביב-אתחול-מתנע: מתנע ליבה, כולל תמיכה בתצורה אוטומטית, רישום ו- YAML
  • אביב-אתחול-סטארט-אפ: סטרטר לתכנות מונחה היבט עם Spring AOP ו- AspectJ
  • spring-boot-starter-data-jpa: התחלה לשימוש ב- Spring Data JPA עם Hibernate
  • אביב-אתחול-המתנע-אבטחה: המתנע לשימוש באבטחת אביב
  • אביב-אתחול-התחלה-מבחן: מתנע לבדיקת יישומי Spring Boot
  • אביב-אתחול-התחלת-רשת: מתנע לבניית רשת, כולל יישומי RESTful המשתמשים באביב MVC

לקבלת רשימה מלאה של מנות ראשונות, עיין במאגר זה.

למידע נוסף על מנות התחלה של Spring Spring, עיין במבוא למתחילי Spring Boot Boot.

שאלה 6. כיצד להשבית תצורה אוטומטית ספציפית?

אם אנו רוצים להשבית תצורה אוטומטית ספציפית, אנו יכולים לציין אותה באמצעות ה- לא לכלול תכונה של @EnableAutoConfiguration ביאור. למשל, קטע קוד זה מנטרל DataSourceAutoConfiguration:

// הערות אחרות @EnableAutoConfiguration (exclude = DataSourceAutoConfiguration.class) מחלקה ציבורית MyConfiguration {}

אם הפעלנו תצורה אוטומטית באמצעות ה- @ SpringBootApplication ביאור - שיש לו @EnableAutoConfiguration כמטא-ביאור - נוכל להשבית את התצורה האוטומטית עם תכונה באותו שם:

// הערות אחרות @ SpringBootApplication (לא לכלול = DataSourceAutoConfiguration.class) מחלקה ציבורית MyConfiguration {}

אנו יכולים גם להשבית תצורה אוטומטית עם spring.autoconfigure.exclude רכוש סביבתי. הגדרה זו ב application.properties קובץ עושה את אותו הדבר כמו קודם:

spring.autoconfigure.exclude = org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

ש 7. כיצד לרשום תצורה אוטומטית מותאמת אישית?

כדי לרשום מחלקה לתצורה אוטומטית, עלינו לרשום את השם המוסמך שלה EnableAutoConfiguration מקש את META-INF / spring.fabrics קוֹבֶץ:

org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.baeldung.autoconfigure.CustomAutoConfiguration

אם אנו בונים פרויקט עם Maven, יש למקם את הקובץ ב משאבים / META-INF הספריה, שתסתיים במיקום שהוזכר במהלך חֲבִילָה שלב.

ש 8. כיצד ניתן לומר שהתצורה האוטומטית תחזור כששעועית קיימת?

כדי להנחות מחלקה לתצורה אוטומטית להתנתק כאשר שעועית כבר קיימת, אנו יכולים להשתמש ב- @ConditionalOnMissingBean ביאור. התכונות הבולטות ביותר של ביאור זה הן:

  • ערך: סוגי השעועית שיש לבדוק
  • שֵׁם: שמות שעועית שיש לבדוק

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

@Configuration מחלקה ציבורית CustomConfiguration {@Bean @ConditionalOnMissingBean שירות CustomService ציבורי () {...}}

שאלה 9. כיצד לפרוס יישומי רשת אתחול האביב כקבצי צנצנת ומלחמה?

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

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

אביב מתמודד עם בעיה זו על ידי מתן תוסף, כלומר spring-boot-maven-plugin, לארוז יישום אינטרנט כ- JAR להפעלה. כדי לכלול תוסף זה, פשוט הוסף א חיבור אלמנט ל pom.xml:

 org.springframework.boot spring-boot-maven-plugin 

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

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

שימו לב שה- אריזה אלמנט ב pom.xml יש להגדיר את הקובץ ל- קַנקַן לבניית קובץ JAR:

קַנקַן

אם אנו לא כוללים את האלמנט הזה, הוא גם ברירת המחדל ל קַנקַן.

במקרה שאנחנו רוצים לבנות קובץ WAR, שנה את ה- אריזה אלמנט ל מִלחָמָה:

מִלחָמָה

והשאיר את תלות המכולה מחוץ לקובץ הארוז:

 org.springframework.boot spring-boot-starter-tomcat מסופק 

לאחר שהוציאו להורג את Maven חֲבִילָה בשלב, יהיה לנו קובץ WAR שניתן לפרוס.

ש 10. כיצד להשתמש באתחול קפיץ ליישומי שורת פקודה?

בדיוק כמו כל תוכנית Java אחרת, יישום שורת פקודה של Spring Boot חייב לכלול רָאשִׁי שיטה. שיטה זו משמשת כנקודת כניסה, הקוראת את ה- SpringApplication # לרוץ שיטה לאתחול היישום:

@SpringBootApplication מחלקה ציבורית MyApplication {public static void main (String [] args) {SpringApplication.run (MyApplication.class); // הצהרות אחרות}}

ה אביב יישום בכיתה ואז יורה מיכל קפיץ ומגדיר שעועית אוטומטית.

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

לאחר שהתקשר ל לָרוּץ בשיטה, אנו יכולים לבצע הצהרות אחרות כמו בתוכנית רגילה.

שאלה 11. מהם המקורות האפשריים לתצורה חיצונית?

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

לאחר מכן נוכל לקבל גישה למאפיינים אלה באמצעות ה- @ערך ביאור, אובייקט מאוגד דרך ה- @ConfigurationProperties ביאור, או סביבה הַפשָׁטָה.

שאלה 12. מה הפירוש של מגף קפיץ התומך בכריכה רגועה?

כריכה רגועה באביב אתחול חלה על הכריכה הבטוחה לסוג של מאפייני התצורה.

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

לדוגמה, אם נכס בשיעור שעועית עם @ConfigurationProperties ההערה נקראת myProp, זה יכול להיות קשור לכל אחד ממאפייני הסביבה הבאים: myProp, האביזר שלי, my_prop, או MY_PROP.

ש 13. מה הוא אביב Devtools אתחול המשמש עבור?

Spring Boot Tools Tools, או DevTools, הוא מערכת כלים המקלה על תהליך הפיתוח. כדי לכלול תכונות זמן פיתוח אלה, עלינו להוסיף תלות ב- pom.xml קוֹבֶץ:

 org.springframework.boot spring-boot-devtools 

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

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

יישומים המשתמשים ב- DevTools מופעלים מחדש בכל פעם שקובץ בשביל הכיתה משתנה. זו תכונה מועילה מאוד בפיתוח, מכיוון שהיא נותנת משוב מהיר לשינויים.

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

לקבלת מידע נוסף בנושא זה, ראה סקירה כללית של DevTools Spring Boot.

ש 14. איך כותבים מבחני שילוב?

כשמריצים מבחני אינטגרציה ליישום Spring, עלינו להיות עם ApplicationContext.

כדי להקל על חיינו, Spring Boot מספק הערה מיוחדת לבדיקה - @ SpringBootTest. ביאור זה יוצר ApplicationContext משיעורי תצורה המצוינים על ידי שיעורים תְכוּנָה.

למקרה ש שיעורים התכונה אינה מוגדרת, Spring Boot מחפש את מחלקת התצורה הראשית. החיפוש מתחיל מהחבילה שמכילה את הבדיקה ועד שהיא מוצאת כיתה שמסומנת עליה @ SpringBootApplication אוֹ @ SpringBootConfiguration.

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

ש 15. לשם מה משמש מפעיל אתחול האביב?

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

שילוב מפעיל אתחול האביב בפרויקט הוא פשוט מאוד. כל שעלינו לעשות הוא לכלול את ה- קפיץ-אתחול-מתנע-מפעיל המתנע ב pom.xml קוֹבֶץ:

 org.springframework.boot spring-boot-starter-actuator 

Spring Boot Actuator יכול לחשוף מידע תפעולי באמצעות נקודות HTTP או JMX. רוב היישומים הולכים על HTTP, אם כי שם זהות נקודת הקצה וה- /מַפעִיל קידומת ליצור נתיב URL.

להלן כמה מנקודות הקצה המובנות הנפוצות ביותר המציע:

  • env: חושף מאפייני סביבה
  • בְּרִיאוּת: מציג מידע על בריאות היישומים
  • httptrace: מציג מידע מעקב אחר HTTP
  • מידע: מציג מידע יישומי שרירותי
  • מדדים: מציג מידע על מדדים
  • כורתים: מראה ומשנה את התצורה של רישומי עצים ביישום
  • מיפויים: מציג רשימה של כולם @ בקשת מיפוי שבילים

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

ש 16. איזו דרך טובה יותר להגדיר פרויקט אתחול קפיצי - באמצעות מאפיינים או YAML?

YAML מציע יתרונות רבים על פני קבצי מאפיינים, כגון:

  • בהירות רבה יותר וקריאות טובה יותר
  • מושלם עבור נתוני תצורה היררכיים, המיוצגים גם בפורמט טוב וקריא יותר
  • תמיכה במפות, רשימות וסוגי סקלר
  • יכול לכלול מספר פרופילים באותו קובץ

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

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

ש 17. מהן ההערות הבסיסיות שמציע מגף האביב?

ההערות העיקריות שמציע Spring Boot מצויות בתוכנה org.springframework.boot.autoconfigure וחבילות המשנה שלו. להלן כמה בסיסיים:

  • @EnableAutoConfiguration - כדי לגרום ל- Spring Boot לחפש שעועית בתצורה אוטומטית על מסלול הכיתה שלה ולהחיל אותן באופן אוטומטי.
  • @ SpringBootApplication - משמש לציון המחלקה העיקרית של יישום אתחול. ביאור זה משלב @תְצוּרָה, @EnableAutoConfiguration, ו @ComponentScan ביאורים עם מאפייני ברירת המחדל שלהם.

הערות על מגפי האביב מציעות תובנה רבה יותר בנושא.

ש 18. כיצד ניתן לשנות את יציאת ברירת המחדל ב- Spring Boot?

אנו יכולים לשנות את יציאת ברירת המחדל של שרת המוטמע באביב אתחול באמצעות אחת מהדרכים הבאות:

  • באמצעות קובץ מאפיינים - אנו יכולים להגדיר זאת ב- application.properties (אוֹ application.yml) קובץ באמצעות המאפיין server.port
  • באופן פרוגרמטי - בעיקרינו @ SpringBootApplication בכיתה, אנחנו יכולים להגדיר את server.port על אביב יישום למשל
  • באמצעות שורת הפקודה - כאשר מריצים את היישום כקובץ jar, אנו יכולים להגדיר את server.port כארגומנט פקודה java:
    java -jar -Dserver.port = 8081 myspringproject.jar 

ש 19. באילו שרתים משובצים תומך Spring Boot, וכיצד לשנות את ברירת המחדל?

מתאריך, Spring MVC תומך ב- Tomcat, Jetty ו- Undertow. Tomcat הוא שרת היישומים המוגדר כברירת מחדל הנתמך על ידי Spring Boot רשת מַתנֵעַ.

Spring WebFlux תומך בכור Netty, Tomcat, Jetty ו- Undertow עם הכור Netty כברירת מחדל.

באביב MVC, כדי לשנות את ברירת המחדל, נניח ל- Jetty, עלינו לא לכלול את Tomcat ולכלול את Jetty בתלות:

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty 

באופן דומה, כדי לשנות את ברירת המחדל ב- WebFlux ל- UnderTow, עלינו לא לכלול את הכור Netty ולכלול את UnderTow בתלות.

"השוואת servlet מוטבע מכיל ב- Spring Boot" מכילה פרטים נוספים על השרתים המוטבעים השונים בהם אנו יכולים להשתמש ב- Spring MVC.

ש 20. מדוע אנו זקוקים לפרופילי אביב?

בעת פיתוח יישומים עבור הארגון, אנו בדרך כלל מתמודדים עם מספר סביבות כגון Dev, QA ו- Prod. מאפייני התצורה של סביבות אלה שונים.

לדוגמא, אנו עשויים להשתמש במסד נתונים H2 משובץ עבור Dev, אך ל- Prod יכול להיות Oracle או DB2 הקניינית. גם אם ה- DBMS זהה בכל סביבות, כתובות ה- URL בהחלט יהיו שונות.

כדי להפוך את זה לקל ונקי, באביב יש פרופילים המסייעים להפריד בין התצורה לכל סביבה. כך שבמקום לשמור על תכנות זה, ניתן לשמור את המאפיינים בקבצים נפרדים כגון יישום-dev. נכסים ו יישום- prod. נכסים . ברירת המחדל application.properties מצביע על הפרופיל הפעיל כעת באמצעות אביב. פרופילים. פָּעִיל כך שהתצורה הנכונה נקלטת.

פרופילי אביב נותנים מבט מקיף על נושא זה.

3. מסקנה

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