world tutorial hello example español ejemplo advice java aop aspectj

java - tutorial - AspectJ "alrededor" y "proceder" con "antes/después"



spring aop hello world (2)

Digamos que tienes tres consejos: alrededor , antes y después .

1) ¿Se llama antes / después cuando se proceda en el consejo general, o se llama antes / después del consejo completo?

2) Si mi aviso no funciona, ¿se ejecutará el aviso de antes / después ?


Con esta prueba

@Aspect public class TestAspect { private static boolean runAround = true; public static void main(String[] args) { new TestAspect().hello(); runAround = false; new TestAspect().hello(); } public void hello() { System.err.println("in hello"); } @After("execution(void aspects.TestAspect.hello())") public void afterHello(JoinPoint joinPoint) { System.err.println("after " + joinPoint); } @Around("execution(void aspects.TestAspect.hello())") public void aroundHello(ProceedingJoinPoint joinPoint) throws Throwable { System.err.println("in around before " + joinPoint); if (runAround) { joinPoint.proceed(); } System.err.println("in around after " + joinPoint); } @Before("execution(void aspects.TestAspect.hello())") public void beforeHello(JoinPoint joinPoint) { System.err.println("before " + joinPoint); } }

tengo salida siguiente

  1. alrededor antes de la ejecución (aspectos nulos.TestAspect.hello ())
  2. antes de la ejecución (aspectos nulos.TestAspect.hello ())
  3. en hola
  4. después de la ejecución (aspectos nulos.TestAspect.hello ())
  5. alrededor después de la ejecución (aspectos nulos.TestAspect.hello ())
  6. alrededor antes de la ejecución (aspectos nulos.TestAspect.hello ())
  7. alrededor después de la ejecución (aspectos nulos.TestAspect.hello ())

Para que puedas ver antes / después no se llaman.


Que: 2) Si mi consejo de servicio no funciona, ¿se ejecutará el consejo de antes / después?

Respuesta: Si no llama, puede omitir su consejo anterior, así como la ejecución de su código, pero su consejo posterior se ejecutará. Pero si su consejo posterior utiliza algún valor de ese método, todo será nulo. Prácticamente No tiene sentido usar ese consejo en absoluto ...

Esperanza, me ayudó.