קורס Javaמתקדם Spring + AOP קרן כליף 2 | ©Keren Kalif |spring+AOP | מתקדםJava :ביחידה זו נלמד Aspect Oriented Programming AspectJ באמצעותAOP מימוש Spring באמצעותAOP מימוש ומוטיבציהspring - מהו מנגנון ה spring - במנגנון הbean מעגל החיים של Javaמתקדם | 3 | ©Keren Kalif |spring+AOP התקנת pluginשל AspectJ כדי לדעת מהי גרסת האקליפס :בתפריט Helpלבחור :About אם יש רק שם גרסה ללא מספר ,יש ללחוץ על Installation Details 4 | ©Keren Kalif |spring+AOP | מתקדםJava AspectJ שלplugin התקנת Javaמתקדם | 5 | ©Keren Kalif |spring+AOP התקנת pluginשל AspectJ מהקישור הבא יש להתקין את גרסאת הפלאגין עבור הגרסה המתאימה לאקליפס שמותקן אצלכםhttp://eclipse.org/ajdt/downloads/ : Javaמתקדם | 6 | ©Keren Kalif |spring+AOP תוכנית פשוטה עם פקודות trace בעיה Tangling :1 ישנה הצמדה בין הלוגיקה של התוכנית לבין פקודות המעקב בעיה Scattering :2 פקודות המעקב מפוזרות בכל מקום בקוד Javaמתקדם | 7 | ©Keren Kalif |spring+AOP פתרון בעית ה trace -באמצעות AOP מאיפה הגיעו הדפסות המעקב?? 8 | ©Keren Kalif |spring+AOP | מתקדםJava pointcut, before, after :aspect -הגדרת ה 9 | ©Keren Kalif |spring+AOP | מתקדםJava around :aspect -הגדרת ה Javaמתקדם | 10 | ©Keren Kalif |spring+AOP AOP – Aspect Oriented Programming בתכנות מכוון עצמים ( )OOPהאובייקט צריך לדעת לבצע את הפעולות שקשורות אליו :לכתוב ללוגים ,תקשורת עם ,DBאבטחה ,טיפול בשגיאות וכד' o כלומר ,מחלקות מרובות היו צריכות לעבוד מול תשתיות אלו בתכנות מכוון אספקטים ( )AOPיש אפשרות לעבוד רוחבית מול מודולים שונים במערכת o למשל :יהיה מודול מרכזי שידע לעשות זאת עבור על המערכת (פותר את בעיית ה)scattering - היתרון ב :AOP -הפרדה בין הרכיבים השונים של המערכת o כך ניתן למכור ללקוח תוכנה ללא מודול מסויים בקלות (פותר את בעיית ה)tangling - שני מימושיים מובילים ל:AOP - ( aspectשאיתו עבדנו עד כה)( Spring AOP -נראה בהמשך) 11 | ©Keren Kalif |spring+AOP | מתקדםJava מושגים- AOP מודול רוחבי באפליקציה:Crosscutting Concern מייצג מקום המריץ מתודה:Join Point אחת בקודJoin Point ביטוי המזהה לפחות:Point Cut Join Point - פעולה המתבצעת ב:Advice שיבוצעו עליהםAdvice - והPoint Cut שזוהו ע"יJoin Point מודול הכולל אוסף של:Aspect אחד לפחותAspect - אובייקט המקושר ל:Target Object / Adviced Object Javaמתקדם | 12 | ©Keren Kalif |spring+AOP דוגמת שימוש :שילוב AOPלתרגול רקורסיות X כאשר סטודנט כותב רקורסיה שאינה עובדת ,קשה לו לאתר באיזה מחלקי הרקורסיה ישנה טעות מאחר ורקורסיה פשוטה מורכבת מ 3 -חלקים ,נכתוב תשתית אשר מבצעת חלק מסויים מהרקורסיה ,והסטודנט יצטרך להשלים חלק אחר באופן זה הסטודנט יוכל לתרגל ולבדוק את כל אחד מחלקי הרקורסיה באופן בלתי-תלוי בשאר החלקים 13 | ©Keren Kalif |spring+AOP X | מתקדםJava ציור משולש:1 דוגמה Javaמתקדם | 14 | ©Keren Kalif |spring+AOP דוגמה :סטודנט כותב רק תנאי עצירה X Javaמתקדם | 15 | ©Keren Kalif |spring+AOP דוגמה :סטודנט כותב רק קריאה רקורסיבית X Javaמתקדם | 16 | ©Keren Kalif |spring+AOP דוגמה :סטודנט כותב רק קישור X 17 | ©Keren Kalif |spring+AOP | מתקדםJava המופעל עבור חריגות שנזרקוaspect 18 | ©Keren Kalif |spring+AOP | מתקדםJava המופעל עבור חריגות שנזרקוaspect Javaמתקדם | 19 | ©Keren Kalif |spring+AOP מהו ?Spring תשתית באמצעותה ניתן לממש את מנגנון הAOP - בנוסף: o מערכת אשר רכיביה אינם מכירים אחד את השני ובקלות ניתן להחליף רכיב באחר • • • שימוש נרחב בממשקים העדפה לשימוש בקונפיגורציה שימוש רב בbeans - הקישור ממנו נוריד pluginלאקליפס עבור ה:Spring Tool Suite - http://dist.springsource.com/release/TOOLS/update/e4.3/ Javaמתקדם | 20 | ©Keren Kalif |spring+AOP תחילת העבודה נייצר פרוייקט מסוג Spring נוסיף אליו את כל ה'JAR -ים שבזיפ המצורף Javaמתקדם | 21 | ©Keren Kalif |spring+AOP מימוש אספקטים בspring - להוסיף לפרוייקט את ה'jar -ים עבור הAOP - 22 | ©Keren Kalif |spring+AOP | מתקדםJava דוגמא aspect -ניתן לראות שה bean -פעל רק עבור ה 23 | ©Keren Kalif |spring+AOP | מתקדםJava בקונפיגורציהPointcut - והAspect -הגדרת ה Javaמתקדם | 24 | ©Keren Kalif |spring+AOP סינון מתודות ב PointCut -באמצעות Annotation מתודות שמתאימות לביטוי וסומנו עם הannotation - \ איזו מתודה להריץ מתי להריץ את הAspect - 25 | ©Keren Kalif |spring+AOP | מתקדםJava Javaמתקדם | 26 | ©Keren Kalif |spring+AOP סינון מחלקות בPointCut - ניתן להתבסס עם annotationשמופיע גם על הפרמטרים או הערך המוחזר Javaמתקדם | 27 | ©Keren Kalif |spring+AOP טיפול במתודות שזרקו חריגה וכמובן הטיפול יכול להיות כל פעולה יותר מורכבת ,למשל שליחת אימייל וכד' 28 | ©Keren Kalif |spring+AOP | מתקדםJava Javaמתקדם | 29 | ©Keren Kalif |spring+AOP מיפוי ביניים יצירת אובייקטים בקונפיגורציה מימוש באמצעות קונפיגורציה AOP מימוש באמצעות קונפיגורציה או annotation Spring מימוש באמצעות יצירת מחלקת aspect AspectJ Javaמתקדם | 30 | ©Keren Kalif |spring+AOP - Springדוגמא בסיסית ()1 באה לענות על הצורך של בניית מערכת אשר רכיביה אינם מכירים אחד את השני ובקלות ניתן להחליף רכיב באחר 31 | ©Keren Kalif |spring+AOP )2( | מתקדםJava דוגמא בסיסית Javaמתקדם | 32 | ©Keren Kalif |spring+AOP דוגמא בסיסית ()3 הגדרת סוגי המשתנים בקונפיגורציה האובייקטים נטענים ומאותחלים באמצעות מנגנון הreflection - לידיעה :ה c’tor -של ClassPathXmlApplicationContextיכול לקבל מערך של מחרוזות ,המכיל שמות קבצים מרובים בהם מוגדרים ה bean -השונים Javaמתקדם | 33 | ©Keren Kalif |spring+AOP הפעלת שיטות setדרך הקונפיגורציה ערך ה name -יהיה כשם התכונה ,ויופעל הset - המתאים באמצעות מנגנון הreflection - Javaמתקדם | 34 | ©Keren Kalif |spring+AOP העברת פרמטר מטיפוס בסיסי לקונסטרקטור בקונפיגורציה Javaמתקדם | 35 | ©Keren Kalif |spring+AOP העברת פרמטר מטיפוס אובייקט לקונסטרקטור בקונפיגורציה המנגנון של Springיודע ליצר את האובייקטים לפי סדר התלויות שלהם )(Dependency Injection Javaמתקדם | 36 | ©Keren Kalif |spring+AOP סיכום הרעיון מאחורי השימוש בspring - מאפשר לתוכנית להגדיר את הלוגיקה והזרימה ,ללא התייחסות למימושים ספציפיים הקוד מתבסס על שימושים בממשקים המימושים נקבעים בקונפיגורציה ונטענים בזמן ריצה באמצעות מנגנון הrelection - Javaמתקדם | 37 | ©Keren Kalif |spring+AOP מנגנון החיים של bean מעגל החיים של ה bean -כולל 3שלבים: .1 איתחול )(Initialization • • .2 שימוש )(Use • .3 יצירת המשתנים ,אתחול ,הקצאת משאבים מתבצע בזמן יצירת הApplicationContext - ביצוע פעולות הריסה )(Destruction • • שחרור משאבים יתבצע עם סגירת הcontext - Javaמתקדם | 38 | ©Keren Kalif |spring+AOP מימוש מנגנון החיים של הbean - ישנן 3דרכים לממש את השלבים במעגל החיים של ה:bean - .1 .2 .3 שימוש ב annotation -בקוד הגדרת שיטות לאתחול/הריסה בקובץ הקונפיגורציה מימוש ממשקים 39 | ©Keren Kalif |spring+AOP | מתקדםJava annotations מימוש מעגל החיים באמצעות Javaמתקדם | 40 | ©Keren Kalif |spring+AOP מימוש מעגל החיים באמצעות annotations יש לסגור את ה context -על מנת שיפעיל את מנגנון השחרור Javaמתקדם | 41 | ©Keren Kalif |spring+AOP מימוש מעגל החיים באמצעות הגדרת שיטות בקונפיגורציה Javaמתקדם | 42 | ©Keren Kalif |spring+AOP מימוש מעגל החיים באמצעות מימוש ממשקים 43 | ©Keren Kalif |spring+AOP | מתקדםJava Bean Scoping : הוא אחד מהבאיםbean טווח ההכרה של ) (ברירת מחדלSingleton – מופע חדש לכל הפניהPrototype Session Request o o o o 44 | ©Keren Kalif |spring+AOP | מתקדםJava main - ה:Bean Scoping Javaמתקדם | 45 | ©Keren Kalif |spring+AOP הורשת 'beanים לא ניתן לייצר אובייקט הגדרת /דריסת השדות הנוספים כן יווצר beanמהגדרה זו (אין )abstract Javaמתקדם | 46 | ©Keren Kalif |spring+AOP הגדרת 'beanים מקוננת במקום לבצע refל bean -אחר, מגדירים אותו פנימי ל bean -הנוכחי. ה bean -הפנימי אנונימי ,אין לו /idשם o לא ניתן לגשת ל bean -הפנימי באופן ישיר 47 | ©Keren Kalif |spring+AOP | מתקדםJava :ביחידה זו למדנו Aspect Oriented Programming AspectJ באמצעותAOP מימוש Spring באמצעותAOP מימוש ומוטיבציהspring - מהו מנגנון ה spring - במנגנון הbean מעגל החיים של
© Copyright 2024