ההבדל בין vs.

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

במדריך זה נלמד על ההבדלים בין שני רכיבי תצורת XML עיקריים של אביב: ו .

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

כפי שכולנו יודעים, Spring מספק לנו שתי דרכים להגדרת שעועית ותלות שלנו: תצורת XML והערות Java. אנו יכולים לסווג את ההערות של אביב בשתי קבוצות: הערות על הזרקת תלות והערות שעועית.

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

עם זאת, עלינו לזכור זאת אין הערות חסרות תועלת אלא אם כן אנו מפעילים אותן. על מנת להפעיל אותם, אנו יכולים להוסיף את אחד מהם אוֹ על גבי קובץ ה- XML ​​שלנו.

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

3. הפעלת ביאור על ידי <הקשר: ביאור-config>

ה ההערה משמשת בעיקר להפעלת הערות הזרקת התלות. @Autowired, @מַגְדִיר, @PostConstruct, @ PreDestroy, ו @מַשׁאָב הם חלק מאלה ש יכול לפתור.

בואו נעשה דוגמה פשוטה כדי לראות כיצד יכול לפשט את תצורת ה- XML ​​עבורנו.

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

מחלקה ציבורית UserService {@ AccountService AccountService פרטי מאושר; }
שירות AccountService בכיתה ציבורית {}

עכשיו, בואו נגדיר את השעועית שלנו.

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

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

אם לא היינו משתמשים @Autowiredואז נצטרך להגדיר את חשבון שירות תלות ידנית:

כעת אנו יכולים להתייחס לשעועית ולתלות שלנו במבחן יחידה:

@ מבחן חלל ציבורי givenContextAnnotationConfig_whenDependenciesAnnotated_thenNoXMLNeeded () {ApplicationContext context = new ClassPathXmlApplicationContext ("classpath: annotationconfigvscomponentscan-beans.xml"); UserService userService = context.getBean (UserService.class); AccountService accountService = context.getBean (AccountService.class); Assert.assertNotNull (userService); Assert.assertNotNull (accountService); Assert.assertNotNull (userService.getAccountService ()); }

הממ, משהו לא בסדר כאן. נראה כאילו האביב לא חיווט את חשבון שירות למרות שהערנו על ידי @Autowired. זה נראה כמו @Autowired אינו פעיל. על מנת לפתור בעיה זו, פשוט נוסיף את השורה הבאה מעל קובץ ה- XML ​​שלנו:

4. הפעלת ביאור על ידי <הקשר: סריקת רכיבים>

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

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

@רְכִיב, מאגר @, @שֵׁרוּת, @בקר, @ RestController, ו @תְצוּרָה הם כמה כאלה יכול לזהות.

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

@ UserService בכיתה ציבורית רכיב {@ AccountService accountService פרטי; } 
@Component ציבורי AccountService {}

הנה ה @רְכִיב ביאור מסמן את השיעורים שלנו כשעועית. כעת נוכל לנקות את כל הגדרות השעועית מקובץ ה- XML ​​שלנו. וכמובן, אנחנו צריכים לשמור על נוסף על כך:

לסיום, נציין כי אביב יחפש את השעועית המסומנת ואת התלות מתחת לחבילה שצוינה על ידי חבילת בסיס תְכוּנָה.

5. מסקנה

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

דוגמאות קוד, כמו תמיד, הסתיימו ב- GitHub.


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