שימוש ב- @ Autowired בשיעורים מופשטים

1. הקדמה

במדריך מהיר זה נסביר כיצד להשתמש ב- @Autowired ביאור בשיעורי מופשט.

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

2. הזרקת סתר

אנחנו יכולים להשתמש @Autowired בשיטת קובע:

מחלקה מופשטת ציבורית BallService {LogRepository private logRepository; @Autowired סופי חלל ריק setLogRepository (LogRepository logRepository) {this.logRepository = logRepository; }}

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

3. הזרקת קונסטרוקטור

אנחנו לא יכולים להשתמש @Autowired על קונסטרוקטור של כיתה מופשטת.

האביב לא מעריך את @Autowired ביאור על בונה של כיתה מופשטת. תת המשנה צריכה לספק את הטיעונים הנחוצים ל סוּפֶּר בַּנַאִי.

במקום זאת, עלינו להשתמש @Autowired על בנאי מחלקת המשנה:

מחלקה מופשטת ציבורית BallService {כלל פרטי RuleRepositoryRepository; BallService ציבורי (RuleRepository ruleRepository) {this.ruleRepository = ruleRepository; }}
@Component מעמד ציבורי BasketballService מרחיב את BallService {@ שירות כדורסל ציבורי אוטומטי (RuleRepository ruleRepository) {super (ruleRepository) }}

4. גיליון בגידות

בואו נסכם עם כמה כללים לזכור.

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

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

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

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

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

5. מסקנה

במאמר זה התאמנו בשימוש @Autowired במסגרת שיעור מופשט והסביר כמה נקודות מפתח חשובות.

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


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