際際滷

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

More Related Content

Introducing AOP

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

Editor's Notes

  • #2: Cos&apos;竪 un&apos;Aspect (punto di vista) - - Dove 竪 utile (cross-cutting)