אתחול עצלן באתחול האביב 2

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

במדריך זה נראה כיצד להגדיר אתחול עצל ברמת היישום, החל מ- Spring Boot 2.2

2. אתחול עצלן

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

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

3. התלות של Maven

על מנת לקבל את Spring Boot 2.2 ביישום שלנו, עלינו לכלול אותו בנתיב הכיתה שלנו.

עם Maven, אנחנו יכולים פשוט להוסיף את ה- אביב-אתחול-מתנע תלות:

  org.springframework.boot spring-boot-starter 2.2.2.RELEASE 

4. אפשר אתחול עצלן

Spring Boot 2.2 מציג את spring.main.lazy- אתחול המאפיין, מה שמקל על הגדרת אתחול עצלן בכל היישום.

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

בואו להגדיר את המאפיין שלנו application.yml קובץ תצורה:

אביב: עיקרי: אתחול עצלן: נכון

או, אם זה המקרה, אצלנו application.properties קוֹבֶץ:

spring.main.lazy-initialization = true

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

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

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

5. לרוץ

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

על ידי הוספת הודעה לבנאי, נדע בדיוק מתי נוצר השעועית.

סופר בכיתה ציבורית {גמר פרטי מחרוזת סופר מחרוזת; Public Writer (String writerId) {this.writerId = writerId; System.out.println (writerId + "מאותחל !!!"); } כתיבת חלל ציבורי (הודעת מחרוזת) {System.out.println (writerId + ":" + הודעה); }}

בנוסף, בואו ניצור את אביב יישום ולהזריק את השירות שיצרנו בעבר.

@ SpringBootApplication מחלקה ציבורית יישום {@Bean ("writer1") סופר ציבורי getWriter1 () {להחזיר סופר חדש ("סופר 1"); } @Bean ("כותב 2") סופר ציבורי getWriter2 () {להחזיר סופר חדש ("סופר 2"); } ראשי ריק סטטי ציבורי (String [] args) {ApplicationContext ctx = SpringApplication.run (Application.class, args); System.out.println ("ההקשר של האפליקציה מאותחל !!!"); כותב כותב 1 = ctx.getBean ("כותב 1", כותב קלאס); writer1.write ("ההודעה הראשונה"); כותב כותב 2 = ctx.getBean ("כותב 2", כותב קלאס); writer2.write ("הודעה שנייה"); }}

בואו נקבע את spring.main.lazy- אתחול ערך הנכס ל שֶׁקֶר, והפעל את היישום שלנו.

כותב 1 מאותחל !!! כותב 2 מאותחל !!! ההתחלה של הקשר היישום !!! כותב 1: הודעה ראשונה כותב 2: הודעה שנייה

כפי שאנו רואים, השעועית נוצרה כשהתחיל הקשר ההיישום.

עכשיו בואו נשנה את הערך של spring.main.lazy- אתחול ל נָכוֹןוהפעל את היישום שלנו שוב.

הקשר של האפליקציה נותח !!! כותב 1 מאותחל !!! כותב 1: הודעה ראשונה כותב 2 מאותחל !!! כותב 2: הודעה שנייה

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

6. השפעות אתחול עצלן

הפעלת אתחול עצלן ביישום כולו עלולה לייצר השפעות חיוביות ושליליות כאחד.

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

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

7. מסקנה

במדריך זה הגדרנו אתחול עצלן עם המאפיין החדש spring.main.lazy-initialization, הוצג באביב אתחול 2.2.

כמו תמיד, קוד המקור של הדרכה זו זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found