西安網(wǎng)站建設和推廣公司企業(yè)網(wǎng)站制作哪家好
1、切入點表達式:對指定的方法進行攔截,并且生成代理表達式。
表達式語法:execution([修飾符] 返回值類型 包名.類名.方法名(參數(shù)))execution( public void com.test.service.impl.UsersService.add() )
2、表達式不同寫法
1.匹配指定方法
1 | <aop:pointcut expression="execution( public void com.test.service.impl.UsersService.add())" id="pt"/> |
---|---|
2.默認 public 可以省略
2 | <aop:pointcut expression="execution( void com.test.service.impl.UsersService.add())" id=“pt”/>` |
---|---|
3.匹配任何返回值
3 | <aop:pointcut expression="execution( * com.test.service.impl.UsersService.add())" id=“pt”/>` |
---|---|
4.參數(shù)列表可以使用 * , 表示可以是任何的數(shù)據(jù)類型,但必須有參數(shù)
4 | <aop:pointcut expression="execution( * com.test.service.impl.UsersService.add(*))" id=“pt”/>` |
---|---|
5.參數(shù)列表可以使用 … 表示有無參數(shù)均可,有參數(shù)可以是任意類型
5 | <aop:pointcut expression="execution( *com.test.service.impl.UsersService.add(..))" id=“pt”/>` |
---|---|
6.使用…來表示當前包,及其子包
6 | <aop:pointcut expression="execution( * com..UsersService.add(..))" id=“pt”/>` |
---|---|
7.類名可以使用*號,表示任意類
7 | <aop:pointcut expression="execution( * com..*.add(..))" id=“pt”/>` |
---|---|
8.類名也可以使用 * 加后綴,表示這個后綴的所有類
8 | <aop:pointcut expression="execution( * com..*Service.add(..))" id=“pt”/>` |
---|---|
9.方法名可以使用*號,表示任意方法
9 | <aop:pointcut expression="execution( * com..*.*(..))" id=“pt”/>` |
---|---|
10.全通配方式execution( * ….* ( … ) )
10 | <aop:pointcut expression="execution(public * *(..))" id="pt"/> |
---|---|
11.攔截所有save開頭的方法
11 | <aop:pointcut expression="execution(* save*(..))" id="pt"/> |
---|---|
12.多個表達式
<aop:pointcut expression="execution(* 包名.類名.方法名()) || execution(* 包名.類名(不同的類).方法名())"` `id="pt"/>` `<aop:pointcut expression="execution(* ``包名.類名.方法名()) or execution(* 包名.類名(不同的類).方法名())"` `id="pt"/>
13.取非值
13 | <aop:pointcut expression="!execution(* 包名.類名.方法名())" id="pt"/> <aop:pointcut expression=" not execution(* 包名.類名.方法名())" id="pt"/> |
---|---|