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'竪 un'Aspect (punto di vista) - - Dove 竪 utile (cross-cutting)