שאלות ראיונות באביב MVC

1. הקדמה

Spring MVC היא מסגרת האינטרנט המקורית מבית Spring שנבנתה על ה- API של Servlet. הוא מספק אדריכלות Model-View-Controller שבאמצעותה ניתן לפתח יישומי אינטרנט גמישים.

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

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

2. שאלות בסיסיות של MVC באביב

שאלה 1. מדוע עלינו להשתמש ב- MVC באביב?

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

המושגים כמו:

  • שולח סרוולט
  • בקרים
  • צפו במחליטים
  • צפיות, דוגמניות
  • ModelAndView
  • תכונות מודל והפעלה

הם עצמאיים לחלוטין זה מזה, והם אחראים לדבר אחד בלבד.

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

דבר חשוב נוסף הוא שאיננו קשורים לטכנולוגיית תצוגה ספציפית (למשל, JSP), אך יש לנו אפשרות לבחור מבין אלו שאנחנו הכי אוהבים.

גַם, איננו משתמשים ב- Spring MVC רק בפיתוח יישומי אינטרנט אלא גם ביצירת שירותי אינטרנט RESTful.

שאלה 2. מה התפקיד של @Autowired ביאור?

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

לפרטים נוספים, עיין במדריך בנושא @Autowired באביב.

שאלה 3. הסבר תכונת מודל

ה @ModelAttribute ביאור הוא אחד ההערות החשובות ביותר ב- MVC באביב. הוא קושר פרמטר מתודה או ערך החזרת שיטה לתכונת מודל בשם ואז חושף אותו לתצוגת אינטרנט.

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

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

מידע נוסף על ביאור זה ניתן למצוא במאמר שלנו בנושא @ModelAttribute ביאור.

שאלה 4. הסבר את ההבדל בין @בקר ו @ RestController?

ההבדל העיקרי בין @בקר ו @ RestController ביאורים זה ה @ResponseBody ההערה כלולה אוטומטית ב- @ RestController. פירוש הדבר שאיננו צריכים להוסיף הערות לשיטות המטפל שלנו באמצעות ה- @ResponseBody. עלינו לעשות זאת ב @בקר בכיתה אם אנו רוצים לכתוב את סוג התגובה ישירות לגוף התגובה HTTP.

ש 5. תאר א PathVariable

אנחנו יכולים להשתמש ב- @ PathVariable ביאור כפרמטר של שיטת מטפל בכדי לחלץ את הערך של משתנה תבנית URI.

לדוגמא, אם אנו רוצים להביא משתמש לפי מזהה מה- www.mysite.com/user/123, עלינו למפות את השיטה שלנו בבקר כ- /תעודת זהות של משתמש}:

@RequestMapping ("/ user / {id}") public String handleRequest (@PathVariable ("id") מחרוזת UserId, מפת מודלים) {}

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

מותר גם לקיים מספר רב של דברים @ PathVariable ביאורים, או על ידי הכרזתם בזה אחר זה:

@RequestMapping ("/ user / {userId} / name / {userName}") ציבורי מחרוזת handleRequest (@PathVariable מחרוזת userId, @PathVariable מחרוזת משתמש, מפת דגם) {}

או להכניס את כולם לא מַפָּה אוֹ MultiValueMap:

@RequestMapping ("/ user / {userId} / name / {userName}") ציבורי String handleRequest (@PathVariable Map varsMap, מפת הדגם) {}

שאלה 6. אימות באמצעות MVC באביב

Spring MVC תומך כברירת מחדל במפרטי JSR-303. עלינו להוסיף את JSR-303 ואת תלות היישום שלו ליישום ה- MVC שלנו באביב. Validerator Hibernate, למשל, הוא אחד מיישומי JSR-303 העומדים לרשותנו.

JSR-303 הוא מפרט של Java API לאימות שעועית, חלק מג'קרטה EE ו- JavaSE, מה שמבטיח שתכונות של שעועית עומדות בקריטריונים ספציפיים, באמצעות הערות כגון @לא ריק, @Min, ו @ מקס. מידע נוסף על אימות זמין במאמר יסודות האימות של Java Bean.

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

מלבד השימוש ביישומים הקיימים, אנו יכולים לעשות בעצמנו. לשם כך אנו יוצרים תחילה הערה שתואמת את המפרט JSR-303. לאחר מכן אנו מיישמים את מאמת מעמד. דרך אחרת תהיה יישום של אביב מאמת ממשק והגדר אותו כמאמת באמצעות @InitBinder ביאור ב בקר מעמד.

כדי לבדוק כיצד ליישם ולהשתמש באימות משלך, עיין במדריך בנושא אימות מותאם אישית ב- MVC באביב.

ש 7. מה הם @ בקשת גוף וה @ResponseBody?

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

כאשר אנו משתמשים ב- @ResponseBody ביאור על שיטת מטפל בבקר Spring MVC, זה מציין שנכתוב את סוג ההחזרה של השיטה ישירות לגוף התגובה HTTP. לא נכניס את זה ל דֶגֶם, ואביב לא יתפרש כשם תצוגה.

אנא עיין במאמר בנושא @ בקשת גוף ו @ResponseBody כדי לראות פרטים נוספים על הערות אלה.

ש 8. להסביר דֶגֶם, ModelMap ו ModelAndView?

ה דֶגֶם ממשק מגדיר בעל תכונות מודל. ה ModelMap יש מטרה דומה, עם יכולת להעביר אוסף ערכים. לאחר מכן הוא מתייחס לערכים אלה כאילו היו בתוך a מַפָּה. עלינו לציין כי ב דֶגֶם (ModelMap) אנו יכולים לאחסן נתונים בלבד. אנחנו מכניסים נתונים ומחזירים שם תצוגה.

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

תוכל למצוא פרטים נוספים במאמר ב מודל, ModelMap, ו ModelView.

שאלה 9. להסביר מאפייני מושב ו SessionAttribute

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

@Controller @RequestMapping ("/ sessionattributes") @ SessionAttributes ("todos") class public TodoControllerWithSessionAttributes {@GetMapping ("/ form") public String showForm (Model model, @ModelAttribute ("todos") TodoList todos) {// method גוף להחזיר "sessionattributesform"; } // שיטות אחרות}

בדוגמה הקודמת, תכונת המודל 'לעשות'יתווסף לפגישה אם @ModelAttribute וה @SessionAttributes בעלי מאפיין שם זהה.

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

@GetMapping מחרוזת ציבורית getTodos (@SessionAttribute ("todos") TodoList todos) {// body method return "todoView"; }

ש 10. מה המטרה של @EnableWebMVC?

ה @EnableWebMvc מטרת ההערה היא לאפשר MVC של Spring באמצעות תצורת Java. זה שווה ערך ל בתצורת XML. ביאור זה מייבא תצורת MVC של אביב מ- WebMvcConfigurationSupport. זה מאפשר תמיכה עבור @בקר-שיעורים המועמדים לשימוש @ בקשת מיפוי כדי למפות בקשות נכנסות לשיטת מטפל.

תוכלו ללמוד עוד על הערות דומות ועל כך במדריך לאביב @לְאַפשֵׁר ביאורים.

שאלה 11. מה זה ViewResolver באביב?

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

לפרטים נוספים אודות ViewResolver, עיין במדריך שלנו ל- ViewResolver באביב MVC.

שאלה 12. מה ה BindingResult?

BindingResult הוא ממשק מ org.springframework.validation חבילה המייצגת תוצאות מחייבות. אנו יכולים להשתמש בו כדי לזהות ולדווח על שגיאות בטופס שהוגש. קל להפעיל אותה - אנחנו רק צריכים לוודא שנשים את זה כפרמטר מיד אחרי אובייקט הטופס שאנחנו מאמתים. האופציונלי דֶגֶם הפרמטר צריך לבוא אחרי ה- BindingResult, כפי שניתן לראות במדריך המאמת המותאם אישית:

@PostMapping ("/ user") ציבורי מחרוזת submitForm (@Valid NewUserForm newUserForm, תוצאת BindingResult, מודל מודל) {if (result.hasErrors ()) {להחזיר "userHome"; } model.addAttribute ("הודעה", "טופס תקף"); להחזיר "userHome"; }

כאשר האביב רואה את @תָקֵף ביאור, הוא ינסה תחילה למצוא את המאמת של האובייקט המאומת. ואז הוא יאסוף את הערות האימות ויקרא את המאמת. לבסוף, זה יכניס שגיאות שנמצאו ב- BindingResult והוסף את האחרון למודל התצוגה.

ש 13. מהו אובייקט גיבוי טופס?

אובייקט גיבוי הטופס או אובייקט הפקודה הוא רק POJO שאוסף נתונים מהטופס שאנו מגישים.

עלינו לזכור שהוא אינו מכיל שום היגיון, אלא רק נתונים.

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

ש 14. מה התפקיד של @מַגְדִיר ביאור?

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

בואו נראה דוגמא. הכרזנו על שתי שעועית דומות בתצורת XML:

כשננסה לחבר את השעועית, נקבל org.springframework.beans.factory.NoSuchBeanDefinitionException. כדי לתקן את זה, עלינו להשתמש @מַגְדִיר לספר לאביב על איזה שעועית יש לחווט:

@Autowired @Qualifier ("person1") אדם פרטי;

ש 15. מה התפקיד של @נדרש ביאור?

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

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

בואו נראה דוגמה:

אדם בכיתה ציבורית {פרטי שם מחרוזת; @ Required public void setName (שם מחרוזת) {this.name = שם; }}

עכשיו ה שֵׁם של ה אדם שעועית צריכה להיות מוגדרת בתצורת XML כך:

שים לב ש @נדרש לא עובד עם Java מבוסס @תְצוּרָה שיעורים כברירת מחדל. אם עליך לוודא כי כל המאפיינים שלך מוגדרים, תוכל לעשות זאת כאשר אתה יוצר את השעועית ב @אפונה שיטות ביאור.

ש 16. תאר את דפוס הבקר הקדמי

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

הבקר הקדמי יזהה את ה- servlet שצריך לטפל בבקשה תחילה. ואז, כאשר הוא מחזיר את הנתונים מה- servlet, הוא יחליט איזו תצוגה יוצגו ולבסוף, הוא ישלח את התצוגה המוצגת חזרה כתגובה:

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

ש 17. מהן אדריכלות מודל 1 ודגם 2?

דגם 1 ודגם 2 מייצגים שני דגמי עיצוב נפוצים בכל הנוגע לעיצוב יישומי Java.

במודל 1, בקשה מגיעה לסרוולט או ל- JSP שם היא מטופלת. ה- servlet או ה- JSP מעבד את הבקשה, מטפל בלוגיקה עסקית, מאחזר ומאמת נתונים ויוצר את התגובה:

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

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

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

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

במודל 2, בקשה מועברת לבקר, המטפל בלוגיקה הנדרשת על מנת לקבל את התוכן הנכון שיש להציג. הבקר מחזיר את התוכן לבקשה, בדרך כלל כ- JavaBean או כ- POJO. הוא גם מחליט איזו תצוגה צריכה להציג את התוכן ולבסוף מעביר אליו את הבקשה. לאחר מכן, התצוגה מעבדת את הנתונים:

3. שאלות MVC באביב מתקדמות

ש 18. מה ההבדל בין @בקר, @רְכִיב, מאגר @ ו @שֵׁרוּת ביאורים באביב?

על פי תיעוד האביב הרשמי, @רְכִיב הוא סטריאוטיפ כללי לכל רכיב המנוהל על ידי אביב. מאגר @, @שֵׁרוּת, ו @בקר הם התמחויות של @רְכִיב למקרי שימוש ספציפיים יותר, למשל בשכבות ההתמדה, השירות והמצגת בהתאמה.

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

  • @בקר - מציין שהכיתה משרתת את תפקיד הבקר, ומגלה @ בקשת מיפוי ביאורים בתוך הכיתה
  • @שֵׁרוּת - מציין שהמחלקה מחזיקה לוגיקה עסקית ושיטות קריאה בשכבת המאגר
  • @מאגר - מציין שהמחלקה מגדירה מאגר נתונים; תפקידו לתפוס חריגים ספציפיים לפלטפורמה ולזרוק אותם מחדש כאחד מהחרגים המאוחדים הלא מסומנים של אביב

ש 19. מה הם DispatcherServlet ו ContextLoaderListener?

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

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

מצד שני, ContextLoaderListener מתחיל ומכבה את שורש האביב WebApplicationContext. זה קושר את מחזור החיים של ApplicationContext למחזור החיים של ServletContext. אנו יכולים להשתמש בה כדי להגדיר שעועית משותפת העובדת בהקשרים שונים של אביב.

לפרטים נוספים אודות DispatcherServletאנא עיין במדריך זה.

ש 20. מה זה ריבוי פתרונות ומתי עלינו להשתמש בזה?

ה ריבוי פתרונות ממשק משמש להעלאת קבצים. מסגרת האביב מספקת אחת ריבוי פתרונות יישום לשימוש עם Commons FileUpload ואחר לשימוש עם ניתוח בקשות מרובות חלקים של Servlet 3.0.

באמצעות אלה אנו יכולים לתמוך בהעלאות קבצים ביישומי האינטרנט שלנו.

ש 21. מהו מיירט אביב MVC וכיצד להשתמש בו?

מיירט MVC מיירט מאפשר לנו ליירט בקשת לקוח ולעבד אותה בשלושה מקומות - לפני הטיפול, לאחר הטיפול, או לאחר השלמת הבקשה (עם הצגת התצוגה).

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

לפרטים ויישומים שונים, עיין במאמר מבוא לאביב MVC HandlerInterceptor.

ש 22. מהו קלסר ראשוני?

שיטה עם הערה @InitBinder משמש להתאמה אישית של פרמטר בקשה, תבנית URI ועצמי גיבוי / פקודה. אנו מגדירים זאת בבקר וזה עוזר בשליטה בבקשה. בשיטה זו אנו רושמים ומגדירים את המנהג שלנו PropertyEditors, מעצב ומאמתים.

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

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

ש 23. הסבר ייעוץ לבקר

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

כברירת מחדל, @ControllerAdvice חל על השיעורים המוערים איתם @בקר (אוֹ @ RestController). יש לנו גם כמה מאפיינים שאנו משתמשים בהם אם אנו רוצים להיות ספציפיים יותר.

אם ברצוננו להגביל שיעורים רלוונטיים לחבילה, עלינו להוסיף את שם החבילה להערה:

@ControllerAdvice ("my.package") @ControllerAdvice (value = "my.package") @ControllerAdvice (basePackages = "my.package")

אפשר גם להשתמש בחבילות מרובות, אך הפעם עלינו להשתמש במערך במקום ב- חוּט.

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

@ControllerAdvice (basePackageClasses = MyClass.class)

ה 'assignableTypes'אלמנט מיישם את @ControllerAdvice לשיעורים הספציפיים, ואילו 'ביאורים'עושה את זה להערות מסוימות.

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

ש 24. מה עושה ה @ExceptionHandler ביאור האם?

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

בואו נסתכל על הדוגמה מהמאמר שלנו על טיפול בשגיאות עבור REST עם אביב:

@ControllerAdvice מחלקה ציבורית RestResponseEntityExceptionHandler מרחיב את ResponseEntityExceptionHandler {@ExceptionHandler (value = {IllegalArgumentException.class, IllegalStateException.class}) מוגן ResponseEntity handleConflict (RuntimeException בקשה) "צריך להיות בקשה זו". return handleExceptionInternal (לשעבר, bodyOfResponse, HttpHeaders חדשים (), HttpStatus.CONFLICT, בקשה); }}

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

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

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

ש 25. טיפול בחריגים ביישומי אינטרנט

יש לנו שלוש אפשרויות לטיפול בחריגים באביב MVC:

  • לכל יוצא מן הכלל
  • לבקר
  • ברחבי העולם

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

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

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

אנו יכולים גם להעביר את האובייקטים הקשורים לסרוולט (HttpServletRequest, HttpServletResponse, HttpSession, ו קֶרֶן) כפרמטרים של שיטות המטפל. אבל עלינו לזכור שאנחנו לא יכולים לשים את דֶגֶם אובייקט כפרמטר ישירות.

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

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

4. מסקנה

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

אנו מאחלים לך מזל טוב בכל הראיונות הקרובים!