הערות ליבת אביב

מאמר זה הוא חלק מסדרה: • הערות ליבת אביב (מאמר נוכחי) • הערות רשת אביביות

• הערות על מגפי האביב

• הערות על תזמון האביב

• הערות על נתוני אביב

• הערות שעועית אביבית

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

אנו יכולים למנף את יכולותיו של מנוע ה- Spring Spring באמצעות ההערות ב- org.springframework.beans.factory.annotation ו org.springframework.context.annotation חבילות.

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

2. הערות הקשורות ל DI

2.1. @Autowired

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

הזרקת קונסטרוקטור:

מכונית מחלקה {מנוע מנוע; @ רכב אוטומטי (מנוע מנוע) {this.engine = מנוע; }}

הזרקת סטר:

מכונית מחלקה {מנוע מנוע; @Autowired void setEngine (מנוע מנוע) {this.engine = מנוע; }}

הזרקת שדה:

מנוע מכונית {@ מנוע מנוע אוטומטי; }

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

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

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

לפרטים נוספים בקרו במאמרים שלנו בנושא @Autowired והזרקת קונסטרוקטור.

2.2. @אפונה

@אפונה מסמן שיטת מפעל שמייצרת שעועית אביבית:

מנוע מנוע @ שעועית () {להחזיר מנוע חדש (); }

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

לשעועית המתקבלת שם זהה לשיטת המפעל. אם אנו רוצים למנות זאת אחרת, אנו יכולים לעשות זאת באמצעות ה- שֵׁם או ה ערך טיעוני ההערה הזו (הטיעון ערך הוא כינוי לוויכוח שֵׁם):

@Bean ("מנוע") getEngine מנוע () {להחזיר מנוע חדש (); }

שים לב, שכל השיטות שהועלה עם @אפונה חייב להיות ב @תְצוּרָה שיעורים.

2.3. @מַגְדִיר

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

לדוגמה, שתי השעועית הבאה מיישמות את אותו ממשק:

מחלקה ליישומי אופניים רכב {} כלי רכב לרכב מחלקה {}

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

באמצעות הזרקת קונסטרוקטור:

@Autowired Biker (@Qualifier ("אופניים") רכב רכב) {this.vehicle = רכב; }

באמצעות הזרקת סטר:

@Autowired void setVehicle (@Qualifier ("אופניים") רכב רכב) {this.vehicle = רכב; }

לחלופין:

@Autowired @Qualifier ("אופניים") void setVehicle (רכב רכב) {this.vehicle = רכב; }

באמצעות הזרקת שדה:

@Autowired @Qualifier ("אופניים") רכב רכב;

לתיאור מפורט יותר אנא קרא מאמר זה.

2.4. @נדרש

@נדרש על שיטות קובעות לסימון תלות שאנחנו רוצים לאכלס באמצעות XML:

@ Required void setColor (צבע מחרוזת) {this.color = color; }

אחרת, BeanInitializationException ייזרק.

2.5. @ערך

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

הזרקת קונסטרוקטור:

מנוע (@Value ("8") int cylinderCount) {this.cylinderCount = cylinderCount; }

הזרקת סטר:

@Autowired בטל setCylinderCount (@Value ("8") int cylinderCount) {this.cylinderCount = cylinderCount; }

לחלופין:

@Value ("8") ריק setCylinderCount (int cylinderCount) {this.cylinderCount = cylinderCount; }

הזרקת שדה:

@Value ("8") int cylinderCount;

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

נניח את הדברים הבאים .נכסים קוֹבֶץ:

engine.fuelType = בנזין

אנחנו יכולים להזרים את הערך של engine.fuelType עם העוקבים:

@Value ("$ {engine.fuelType}") מחרוזת fuelType;

אנחנו יכולים להשתמש @ערך אפילו עם SpEL. דוגמאות מתקדמות יותר ניתן למצוא במאמרנו בנושא @ערך.

2.6. @תלוי ב

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

אנו זקוקים רק להערה זו כשהתלות תלויות, למשל, טעינת מנהל התקן JDBC או אתחול משתנה סטטי.

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

מחלקה @DependsOn ("engine") ממשיכה ברכב רכב {}

לחלופין, אם נגדיר שעועית עם @אפונה ביאור, יש לציין את שיטת המפעל @תלוי ב:

@Bean @DependsOn ("דלק") מנוע מנוע () {להחזיר מנוע חדש (); }

2.7. @עָצֵל

אנו משתמשים @עָצֵל כשאנחנו רוצים לאתחל את השעועית שלנו בעצלתיים. כברירת מחדל, Spring יוצר את כל שעועית הסינגלטון בשקיקה בעת ההפעלה / אתחול ההקשר של היישום.

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

ביאור זה מתנהג באופן שונה תלוי היכן אנו ממקמים אותו בדיוק. אנחנו יכולים לשים את זה:

  • א @אפונה שיטת מפעל שעועית מסומנת, לעיכוב קריאת השיטה (ומכאן יצירת שעועית)
  • a @תְצוּרָה כיתה וכל הכלול @אפונה השיטות יושפעו
  • א @רְכִיב כיתה, שאינה א @תְצוּרָה בכיתה, השעועית הזו תותחל בעצלתיים
  • an @Autowired בונה, מגדיר או שדה, לטעון את התלות עצמה בעצלתיים (באמצעות proxy)

להערה זו יש טיעון ערך עם ערך ברירת המחדל של נָכוֹן. כדאי לעקוף את התנהגות ברירת המחדל.

לדוגמא, סימון שעועית שיש לטעון בשקיקה כאשר ההגדרה הגלובלית היא עצלה, או להגדיר אותה ספציפית @אפונה שיטות להעמסה להוטה ב @תְצוּרָה כיתה מסומנת ב @עָצֵל:

@Configuration @Lazy class VehicleFactoryConfig {@Bean @Lazy (false) מנוע מנוע () {החזר מנוע חדש (); }}

לקריאה נוספת, אנא בקרו במאמר זה.

2.8. @הבט מעלה

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

מידע מפורט על ההערה ניתן למצוא במאמר זה.

2.9. @יְסוֹדִי

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

כבר ראינו אפשרות להתמודד עם תרחיש זה: לסמן את כל נקודות החיווט באמצעותן @מַגְדִיר וציין את שם השעועית הנדרשת.

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

@Component @ מחלקה ראשונית רכב מיישם רכב {} @ מחלקת רכיב רכיבה על אופניים רכב {} @ נהג בכיתת רכיב {@ רכב רכב מורשה; } @ רכיבת אופנועים בכיתה {@Autowired @Qualifier ("אופניים") רכב רכב; }

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

2.10. @תְחוּם

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

לדוגמה:

מנוע מחלקה @Component @Scope ("prototype") {}

3. הערות על תצורת הקשר

אנו יכולים להגדיר את הקשר היישום עם ההערות המתוארות בסעיף זה.

3.1. @פּרוֹפִיל

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

@Component @Profile ("sportDay") כלי יישום אופניים בכיתה {}

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

3.2. @יְבוּא

אנחנו יכולים להשתמש ספֵּצִיפִי @תְצוּרָה שיעורים ללא סריקת רכיבים עם ההערה הזו. אנחנו יכולים לספק לשיעורים האלה @יְבוּאשל ערך טַעֲנָה:

@Import (VehiclePartSupplier.class) מחלקה VehicleFactoryConfig {}

3.3. @ImportResource

אנחנו יכולים ייבוא ​​תצורות XML עם ההערה הזו. אנו יכולים לציין את מיקומי קובצי ה- XML ​​באמצעות ה- מיקומים טיעון, או עם הכינוי שלו, ערך טַעֲנָה:

@Configuration @ ImportResource ("classpath: /annotations.xml") מחלקה VehicleFactoryConfig {}

3.4. @PropertySource

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

@Configuration @PropertySource ("classpath: /annotations.properties") מחלקה VehicleFactoryConfig {}

@PropertySource ממנף את תכונת ההערות החוזרות על Java 8, מה שאומר שאנחנו יכולים לסמן כיתה איתה מספר פעמים:

@Configuration @PropertySource ("classpath: /annotations.properties") @PropertySource ("classpath: /vehicle-factory.properties") class VehicleFactoryConfig {}

3.5. @PropertySources

אנו יכולים להשתמש בהערה זו כדי לציין מספר רב @PropertySource תצורות:

@Configuration @PropertySources ({@PropertySource ("classpath: /annotations.properties"), @PropertySource ("classpath: /vehicle-factory.properties")}) class VehicleFactoryConfig {}

שים לב שמאז Java 8 נוכל להשיג את אותו הדבר באמצעות תכונת ההערות החוזרת כמתואר לעיל.

4. מסקנה

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

כרגיל, הדוגמאות זמינות ב- GitHub.

הַבָּא » הערות אינטרנט באביב

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