1. Introducción
    1. Programación Orientada a Aspectos
    2. Complemento de Programación Orientada a Objetos
    3. Aspecto: responsabilidad que cruza multiples clases
    4. Ejemplos
      1. Transaccionabilidad
      2. Auditoría
      3. Seguridad
  2. Conceptos
    1. Aspect
      1. modularization of a concern that cuts across multiple classes
    2. Join point
      1. a point during the execution of a program
      2. method execution
    3. Advice
      1. action taken by an aspect at a particular join point
      2. around, after, before, etc
    4. Pointcut
      1. a predicate that matches join points
      2. AspectJ pointcut EL
    5. Introduction
      1. declaring additional methods or fields on behalf of a type
    6. Target object
      1. object being advised by one or more aspects
      2. en Spring AOP son runtime proxies
    7. AOP proxy
      1. an object created by the AOP framework in order to implement the aspect contracts
      2. JDK dynamic proxy
      3. CGLIB proxy
    8. Weaving
      1. compile time
      2. load time
      3. runtime
  3. SpringAOP
    1. Implementado en Java puro
    2. Puede ser utilizado en un contenedor web o en un application server
    3. No es una implementación AOP completa
  4. @AspectJ
    1. <aop:aspectj-autoproxy/>
    2. @Aspect
    3. @Pointcut
      1. @Pointcut("execution(* transfer(..))")
      2. pointcut designators
        1. execution
        2. within
        3. this
        4. target
        5. args
        6. bean(idOrNameOfBean)
    4. Advice
      1. Tipos
        1. @Before
        2. @AfterReturning
        3. @AfterThrowing
        4. @After
        5. @Around
      2. Advice parameters
        1. Access to the current JoinPoint
        2. Passing parameters to advice
    5. Solo para métodos públicos
  5. Schema-based
    1. <aop:config>
    2. <aop:aspect id="myAspect" ref="aBean">
    3. <aop:pointcut id="businessService" expression="execution(* com.xyz.myapp.service.*.*(..))"/>
  6. Acerca de
    1. Topic
    2. Topic