AOP - 切點表示式

CyrusHuang發表於2024-10-20
  • 某個特殊的方法:com.example.service.UserService 類中所有以 find 開頭的公共方法

    execution(public * com.example.service.UserService.find*(..))

  • 類中的所有方法:com.example.service 包下所有類的所有方法

    execution(* com.example.service.*.*(..))

  • 特定引數型別的方法:com.example.service.UserService 類中接受一個 User 物件作為引數的方法

    execution(String com.example.service.UserService.getName(..))

  • com.example.service 包及其子包下的所有類中的所有方法

    execution(* com.example.service..*.*(..))

  • com.example.service 包及其子包下的所有類中的所有方法

    within 不能指定某個方法,本身是類級別的;execution 可以指定某個方法

    如果exection 切某個包及其子包下所有方法就和 within 功能一樣了

    within(com.example.service..*)

  • 帶有特定註解的方法:被 @Loggable 註解標記的方法

    @annotation(com.example.annotation.Loggable)

  • 結合多個條件:匹配 com.example.service 包中所有被 @Loggable 註解標記的方法

    execution(* com.example.service.*.*(..)) && @annotation(com.example.annotation.Loggable)

  • 有異常丟擲的方法:匹配 com.example.service 包下所有方法,並且這些方法丟擲 Exception

    execution(* com.example.service.*.*(..)) throws Exception

相關文章