 
        קורס  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 2025