2013-08-02 8 views
24

Powiedzmy trzy rady: wokół, przed i po.AspectJ „około” i „przejść” z wami „przed/po”

1) Czy przed/po wywoływana gdy postępować nazywa się radą wokół, lub są one nazywane przed/po rada wokół jako całości?

2) Jeśli mój wokół rada nie wymaga postępować, będzie przed/po radę być prowadzony tak?

+0

to sobie wyobrazić, to jest łatwo sprawdzalne; Czy jest jakiś konkretny problem, który temu przeszkadza? –

+0

@DaveNewton Cóż, nie jestem programistą Java i nie mam dostępnego środowiska. Zajmuję się paradygmatem AOP w innym języku i rozglądam się za dokumentacją istniejących narzędzi. Sądzę, że lepiej byłoby zapytać ekspertów, ale jeśli nikt mi nie pomoże, to w końcu to zrobię. –

Odpowiedz

35

tego testu

@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); 
    } 
} 

mam po wyjściu

  1. w okolice przed wykonaniem (void aspects.TestAspect.hello())
  2. przed wykonaniem (void aspects.TestAspect.hello())
  3. na cześć
  4. po wykonaniu (void aspects.TestAspect.hello())
  5. w całym po wykonaniu (void aspects.TestAspect.hello())
  6. w około przed wykonaniem (void aspects.TestAspect.hello())
  7. w całym po wykonaniu (void aspects.TestAspect.hello())

więc można zobaczyć przed/po nie są nazywane

+0

Thx za odpowiedź. Naprawdę pomogło! –

+0

bardzo dziękuję !!!!! – IloveIniesta

Powiązane problemy