==============
常用切入点函数
==============
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()的写法。