אביב @ ביאור ראשוני

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

במדריך מהיר זה נדון באביב @יְסוֹדִי ביאור שהוצג עם גרסת 3.0 של המסגרת.

פשוט שים, אנו משתמשים @יְסוֹדִי לתת עדיפות גבוהה יותר לשעועית כשיש מספר שעועית מאותו סוג.

בואו נתאר את הבעיה בפירוט.

2. למה כן @יְסוֹדִי נָחוּץ?

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

בדוגמה זו יש לנו עובד ג'ון () ו עובד עובד () שעועית של עוֹבֵד סוּג:

@ תצורה מחלקה ציבורית Config {@ שעובד ציבורי שעובד ג'ון עובד () {להחזיר עובד חדש ("ג'ון"); } @ עובד שעובד ציבורי TonyEmployee () {להחזיר עובד חדש ("טוני"); }}

האביב זורק NoUniqueBeanDefinitionException אם ננסה להריץ את היישום.

כדי לגשת לשעועית מאותו הסוג בו אנו משתמשים בדרך כלל @Qualifier ("שם שעועית") ביאור.

אנו מיישמים אותו בנקודת ההזרקה יחד עם @Autowired. במקרה שלנו, אנו בוחרים את השעועית בשלב התצורה כך @מַגְדִיר לא ניתן ליישם כאן. אנחנו יכולים ללמוד עוד על @מַגְדִיר ביאור באמצעות הקישור.

כדי לפתור בעיה זו אביב מציע את @יְסוֹדִי ביאור.

3. השתמש @יְסוֹדִי עם @אפונה

בואו נסתכל על מחלקת התצורה:

@Configuration Class class config {@Bean עובד ציבורי JohnEmployee () {להחזיר עובד חדש ("John"); } @Bean @ עובד ציבורי ראשוני טוני עובד () {להחזיר עובד חדש ("טוני"); }}

אנו מסמנים עובד עובד () שעועית עם @יְסוֹדִי. האביב יזריק עובד עובד () שעועית מעדיפה על פני עובד ג'ון ().

עכשיו בואו נתחיל את הקשר היישום ונקבל את עוֹבֵד שעועית מזה:

AnnotationConfigApplicationContext context = חדש AnnotationConfigApplicationContext (Config.class); עובד שכיר = context.getBean (שכיר עובד); System.out.println (עובד);

לאחר הפעלת היישום:

עובד {name = 'Tony'}

מהפלט אנו יכולים לראות כי ה- עובד עובד () למופע יש העדפה בזמן חיווט אוטומטי.

4. השתמש @יְסוֹדִי עם @רְכִיב

אנו יכולים להשתמש ב- @ Primary ישירות על השעועית. בואו נסתכל על התרחיש הבא:

מנהל ממשק ציבורי {מחרוזת getManagerName (); }

יש לנו מנהל ממשק ושתי שעועית תת-מחלקה, מנהל מחלקה:

@Component מחלקה ציבורית מחלקת יישומים DepartmentManager {@Override Public String getManagerName () {return "מנהל מחלקה"; }}

וה מנהל כללי אפונה:

@Component @ מחלקה ציבורית ראשונית GeneralManager מיישם את המנהל {@Override public String getManagerName () {להחזיר "General Manager"; }}

שניהם עוקפים את getManagerName () של ה מנהל מִמְשָׁק. כמו כן, שים לב שאנו מסמנים את מנהל כללי שעועית עם @יְסוֹדִי.

הפעם, @יְסוֹדִי הגיוני רק כאשר אנו מאפשרים את סריקת הרכיבים:

@Configuration @ComponentScan (basePackages = "org.baeldung.primary") תצורה בכיתה ציבורית {}

בואו ניצור שירות לשימוש בהזרקת תלות בזמן שנמצא את השעועית הנכונה:

@Service בכיתה ציבורית ManagerService {@ מנהל פרטי פרטי ממונה; מנהל ציבורי getManager () {מנהל החזרה; }}

הנה, שני הקטניות מנהל מחלקה ו מנהל כללי זכאים לחיווט אוטומטי.

כפי שסימנו מנהל כללי שעועית עם @יְסוֹדִי, הוא ייבחר להזרקת תלות:

שירות ManagerService = context.getBean (ManagerService.class); מנהל מנהל = service.getManager (); System.out.println (manager.getManagerName ());

התפוקה היא "מנהל כללי".

5. מסקנה

במאמר זה למדנו על אביבים @יְסוֹדִי ביאור. בדוגמאות הקוד הדגמנו את הצורך ואת מקרי השימוש של ה- @יְסוֹדִי.

כרגיל, הקוד השלם למאמר זה זמין בפרויקט GitHub.


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