מה זה שעועית אביבית?

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

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

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

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

2. הגדרת שעועית

להלן הגדרה של שעועית בתיעוד Spring Framework:

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

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

3. היפוך שליטה

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

נתחיל בהכרזה על כמה שיעורי תחום לפני שנצלול ל- IoC.

3.1. שיעורי תחום

נניח שיש לנו הצהרת כיתה:

חברה ממעמד ציבורי {כתובת כתובת פרטית; חברה ציבורית (כתובת כתובת) {this.address = כתובת; } // getter, setter ונכסים אחרים}

בכיתה זו דרוש משתף פעולה מסוג כתובת:

כתובת ציבורית {רחוב מחרוזת פרטי; מספר אינטראקטיבי פרטי; כתובת ציבורית (רחוב מחרוזת, מספר int) {this.street = street; this.number = מספר; } // גטרים וקובעים}

3.2. גישה מסורתית

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

כתובת כתובת = כתובת חדשה ("High Street", 1000); חברת חברה = חברה חדשה (כתובת);

אין שום דבר רע בגישה זו, אך האם לא יהיה זה נחמד לנהל את התלות בצורה טובה יותר?

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

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

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

3.3. תצורת שעועית

ראשית, בואו נקשט את חֶברָה שיעור עם @רְכִיב ביאור:

@Component Company Class Company {// גוף זה זהה לפעם}

הנה מחלקת תצורה המספקת מטא נתונים של שעועית למיכל IoC:

@Configuration @ComponentScan (basePackageClasses = Company.class) מחלקה ציבורית Config {@Bean Address Public Address getAddress () {להחזיר כתובת חדשה ("High Street", 1000); }}

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

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

3.4. IoC בפעולה

מכיוון שהגדרנו שעועית בכיתת תצורה, נצטרך מופע של AnnotationConfigApplicationContext מחלקה לבניית מכולה:

ApplicationContext context = חדש AnnotationConfigApplicationContext (Config.class);

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

חברת חברה = context.getBean ("חברה", Company.class); assertEquals ("High Street", company.getAddress (). getStreet ()); assertEquals (1000, company.getAddress (). getNumber ());

התוצאה מוכיחה כי מיכל ה- IoC יצר ואותחל את השעועית בצורה נכונה.

4. מסקנה

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

קוד המקור המלא של מדריך זה ניתן למצוא באתר GitHub.