2017-05-08 88 views
2

我正在學習Spring中的AOP概念。我現在很清楚@Before@After註解的用法,並開始將它用於時間捕捉目的。何時使用@Pointcut&@Before,@AOP AOP註解

這幾乎可以滿足我所有的AOP相關需求。想知道每個春季指南談到的那個@pointcut詮釋?這是多餘的功能嗎?還是它有單獨的需求?

回答

1

簡而言之,無論您在@Before中指定還是@After是一個切入點表達式。可以使用@Pointcut註釋將其提取到單獨的方法中,以獲得更好的理解,模塊化和更好的控制。例如

@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)") 
    public void requestMapping() {} 

    @Pointcut("within(blah.blah.controller.*) || within(blah.blah.aspect.*)") 
    public void myController() {} 

    @Around("requestMapping() && myController()") 
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { 
     ............... 
    } 

正如你所看到的,而不是指定內部@Around的切入點表達式,你可以使用@Pointcut單獨給兩個方法。

+0

謝謝。所以這意味着我可以使用'Pointcut'表達式來處理某個方法,並且我需要在'Before','After'和'Around'之類的任何一個註釋中使用這些方法。我對嗎 ? – Arun

+1

是。把它看作一個函數聲明。你拿一段代碼並把它放到一個函數中。這使得您的業務邏輯代碼更加簡潔,並且它可以幫助您將這段代碼重用到別處而不是重複 – pvpkiran