============== 常用切入点函数 ============== 1 切入点函数 切入点定义 _________________________|___________________________ / \ | \_____/ | | 切入点 切入点 函数 表达式 切入点函数的作用就是执行其参数中的切入点表达式。 2 execution() 功能最完整,切方法、切类、切包,书写繁琐。 3 args() 根据参数切方法。 如args(String,String),等价于execution(* *(String,String))。 /src/main/resources/applicationContext.xml: UserServiceImpl.register - 不切register方法 >>>> BEFORE INVOKE >>>> \ UserServiceImpl.login 只切login方法 <<<< AFTER INVOKE <<<< / 例程:Proxy 4 within() 切类。 如within(*..UserServiceImpl),等价于execution(* *..UserServiceImpl.*(..))。 /src/main/resources/applicationContext.xml: >>>> BEFORE INVOKE >>>> \ UserServiceImpl.register | <<<< AFTER INVOKE <<<< | | 只切UserServiceImpl类中的方法 >>>> BEFORE INVOKE >>>> | UserServiceImpl.login | <<<< AFTER INVOKE <<<< / OrderServiceImpl.show - 不切OrderServiceImpl类中的方法 例程:Proxy 切包。 如within(cn.tedu.proxy..*),等价于execution(* cn.tedu.proxy..*.*(..))。 /src/main/resources/applicationContext.xml: >>>> BEFORE INVOKE >>>> UserServiceImpl.register <<<< AFTER INVOKE <<<< >>>> BEFORE INVOKE >>>> UserServiceImpl.login <<<< AFTER INVOKE <<<< >>>> BEFORE INVOKE >>>> OrderServiceImpl.show <<<< AFTER INVOKE <<<< 例程:Proxy args()和within()并没有增加新的功能,只是简化了execution()的写法。