Introducing AOP

3,582 views

Published on

Introduzione all'Aspect-oriented Programming

Published in: Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,582
On SlideShare
0
From Embeds
0
Number of Embeds
82
Actions
Shares
0
Downloads
99
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Cos'è un'Aspect (punto di vista) - - Dove è utile (cross-cutting)
  • Introducing AOP

    1. 1. Introducing AOP <ul><ul><li>Aspect - oriented Programming </li></ul></ul><ul><ul><li>...questione di “Punti di vista” </li></ul></ul><ul><ul><li>(Genova JUG, Luglio 2007) </li></ul></ul><ul><ul><li>Bonfante Fabio </li></ul></ul>
    2. 2. A cosa serve... <ul><li>Supporta gli sviluppatori quando hanno a che fare con i famigerati “ cross-cutting concern ” </li></ul><ul><li>cross-cutting concern funzionalità che influenza trasversalmente le altre funzionalità di un sistema (es logging). </li></ul><ul><li>L'esistenza di un cross-cutting concern dipende quindi dalla suddivisione funzionale scelta. </li></ul><ul><li>(da qui appunto...questione di “punti di vista”) </li></ul>
    3. 3. ...cos'è AOP <ul><li>Insieme di tecniche per poter alterare il comportamento di un sistema, al fine di fornire le funzionalità che lo influenzano trasversalmente. </li></ul><ul><li>Racchiuse tipicamente </li></ul><ul><li>in un framework. </li></ul>
    4. 4. Cos'è un'Aspect <ul><li>Un modulo software che svolge le funzionalità corrispondenti a un cross-cutting concern (strutturato tipicamente a sua volta con un design OO) </li></ul>
    5. 5. La ricetta di un Aspect <ul><li>Su cosa intervenire </li></ul><ul><ul><li>Target : oggetti interessati dall'Aspect </li></ul></ul><ul><ul><li>Join point : un punto durante l'esecuzione di un programma </li></ul></ul><ul><li>Indicati tramite </li></ul><ul><ul><li>Pointcut : predicato a cui corrispondono J Point </li></ul></ul>
    6. 6. La ricetta di un Aspect <ul><li>Quando intervenire ad alterare flusso di esecuzione? </li></ul><ul><ul><li>Advice : tipi di interventi dell'Aspect rispetto al JP </li></ul></ul><ul><ul><ul><li>Before </li></ul></ul></ul><ul><ul><ul><li>After returning </li></ul></ul></ul><ul><ul><ul><li>After throwing </li></ul></ul></ul><ul><ul><ul><li>After ( finally ) </li></ul></ul></ul><ul><ul><ul><li>Around </li></ul></ul></ul>
    7. 7. Caratteristiche “desiderabili” per un framework AOP <ul><li>Il sistema alterato dalle Aspect è totalmente inconsapevole della loro esistenza </li></ul><ul><li>Semplicità nel definire le Aspect </li></ul><ul><ul><li>Testato per voi ;-) ... Spring AOP </li></ul></ul>
    8. 8. Spring AOP <ul><li>Paricolarità/Precisazioni: </li></ul><ul><ul><li>Aspect >> classe </li></ul></ul><ul><ul><li>Join Point >> metodi </li></ul></ul><ul><li>Metodi per definire le Aspect </li></ul><ul><ul><li>Tag XML nell'Application Context </li></ul></ul><ul><ul><li>Annotazioni nella classe che implementa la Aspect. </li></ul></ul>
    9. 9. Spring AOP – configurazione (for use with aspectj annotations) <ul><li>Aggiungere nel classpath </li></ul><ul><ul><li>aspectjrt.jar </li></ul></ul><ul><ul><li>aspectjweaver.jar </li></ul></ul><ul><li>Aggiungere nell'applicationContext </li></ul><ul><ul><li><aop:aspectj-autoproxy/> </li></ul></ul><ul><ul><li><bean name=”miaAspect” classname=”path.to.miaAspect”/> </li></ul></ul>
    10. 10. Spring AOP – esempio pratico <ul><li>Un “servizio” di Business con 3 metodi </li></ul><ul><li>Un'Aspect che per il Logging </li></ul><ul><li>Un'Aspect “Crazy” per smanettare! </li></ul><ul><li>GOTO >>> Eclipse! </li></ul>
    11. 11. Errori più comuni <ul><li>Sintassi errata nelle annotazioni (ma ci si salva con l'eccezione!) </li></ul><ul><li>Pointcut sbagliato! (90% delle volte) </li></ul><ul><li>Target non presente nell'applicationContext </li></ul><ul><li>Target non caricato da Spring! </li></ul><ul><li>Configurazione di spring </li></ul><ul><ul><li>aspectjrt.jar, aspectjweaver.jar non nel classpath </li></ul></ul><ul><ul><li><aop:aspectj-autoproxy/> non specificato nell'applicationContext </li></ul></ul>
    12. 12. Cosa c'è ancora da sapere... <ul><li>WARN gli oggetti target di spring in realtà sono proxy alle classi vere e proprie... </li></ul><ul><li>Utilizzo completo di AspectJ </li></ul><ul><li>Altri tipi di Pointcut </li></ul><ul><li>Introduction </li></ul><ul><li>... </li></ul><ul><li>SPRING REFERENCE MANUAL </li></ul>

    ×