ממשקי BeanNameAware ו- BeanFactoryAware באביב

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

במדריך המהיר הזה, אנו מתמקדים ב- BeanNameAware ו BeanFactoryAware ממשקים, במסגרת האביב.

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

2. מוּדָע מִמְשָׁק

שניהם BeanNameAware ו BeanFactoryAware שייכים ל org.springframework.beans.factory.Aware ממשק סמן שורש. זה משתמש בהזרקת סטר כדי להשיג אובייקט במהלך ההפעלה של הקשר היישום.

ה מוּדָע ממשק הוא שילוב של דפוסי עיצוב חזרה, מאזין ומצפה. זה מציין כי השעועית זכאית לקבל הודעה על ידי מיכל האביב באמצעות שיטות ההתקשרות.

3. BeanNameAware

BeanNameAware גורם לאובייקט להיות מודע לשם השעועית שהוגדר במיכל.

בואו נסתכל על דוגמה:

מחלקה ציבורית MyBeanName מיישמת את BeanNameAware {@Override public void setBeanName (String beanName) {System.out.println (beanName); }}

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

לאחר מכן, בוא נרשום שעועית מסוג זה בשיעור תצורת אביב:

@Configuration public class Config {@Bean (name = "myCustomBeanName") MyBeanName ציבורי getMyBeanName () {להחזיר MyBeanName חדש (); }}

כאן הקצנו במפורש שם לשלנו MyBeanName שיעור עם @Bean (שם = "MyCustomBeanName") קַו.

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

AnnotationConfigApplicationContext context = חדש AnnotationConfigApplicationContext (Config.class); MyBeanName myBeanName = context.getBean (MyBeanName.class);

כפי שאנו מצפים, setBeanName מודפסת השיטה "MyCustomBeanName".

אם נסיר את שם = “...” קוד מה- @אפונה ביאור המיכל, במקרה זה, מקצה getMyBeanName () שם השיטה לתוך השעועית. כך שהפלט יהיה "GetMyBeanName".

4. BeanFactoryAware

BeanFactoryAware משמש להזרקת ה- BeanFactory לְהִתְנַגֵד. בדרך זו אנו מקבלים גישה ל BeanFactory אשר יצר את האובייקט.

הנה דוגמה של MyBeanFactory מעמד:

MyBeanFactory בכיתה ציבורית מיישמת את BeanFactoryAware {private BeanFactory beanFactory; @Override public void setBeanFactory (BeanFactory beanFactory) זורק BeansException {this.beanFactory = beanFactory; } חלל ציבורי getMyBeanName () {MyBeanName myBeanName = beanFactory.getBean (MyBeanName.class); System.out.println (beanFactory.isSingleton ("myCustomBeanName")); }}

בעזרת ה- setBeanFactory () שיטה, אנו מקצים את BeanFactory התייחסות ממיכל ה- IoC אל ה- נכס beanFactory.

לאחר מכן, אנו יכולים להשתמש בו ישירות כמו ב- getMyBeanName () פוּנקצִיָה.

בוא נתחיל את MyBeanFactory ולקרוא ל getMyBeanName () שיטה:

MyBeanFactory myBeanFactory = context.getBean (MyBeanFactory.class); myBeanFactory.getMyBeanName ();

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

ה beanFactory.isSingleton ("myCustomBeanName") קו מאמת זאת.

5. מתי להשתמש?

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

ברוב המקרים, עלינו להימנע משימוש באף אחד מה- מוּדָע ממשקים, אלא אם כן אנו זקוקים להם. יישום ממשקים אלה יקשר את הקוד למסגרת האביב.

6. מסקנה

בכתב זה למדנו על BeanNameAware ו BeanFactoryAware ממשקים וכיצד להשתמש בהם בפועל.

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


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