2
我正在學習Spring中的AOP概念。我現在很清楚@Before
和@After
註解的用法,並開始將它用於時間捕捉目的。何時使用@Pointcut&@Before,@AOP AOP註解
這幾乎可以滿足我所有的AOP相關需求。想知道每個春季指南談到的那個@pointcut
詮釋?這是多餘的功能嗎?還是它有單獨的需求?
我正在學習Spring中的AOP概念。我現在很清楚@Before
和@After
註解的用法,並開始將它用於時間捕捉目的。何時使用@Pointcut&@Before,@AOP AOP註解
這幾乎可以滿足我所有的AOP相關需求。想知道每個春季指南談到的那個@pointcut
詮釋?這是多餘的功能嗎?還是它有單獨的需求?
簡而言之,無論您在@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
單獨給兩個方法。
謝謝。所以這意味着我可以使用'Pointcut'表達式來處理某個方法,並且我需要在'Before','After'和'Around'之類的任何一個註釋中使用這些方法。我對嗎 ? – Arun
是。把它看作一個函數聲明。你拿一段代碼並把它放到一個函數中。這使得您的業務邏輯代碼更加簡潔,並且它可以幫助您將這段代碼重用到別處而不是重複 – pvpkiran