前面写到切入点表达式,如果把全部方法都作为切入点的话,用execution(* *(..))表达式,这个表达式代表什么意思呢?
public void login (String name,String address){}
* * ( . . )
* *(..)对应方法如上图
* -------->代表修饰符,返回类型
*--------->代表方法名
()--------->代表参数列表
..--------->代表对参数没有要求(参数是否有,有几个都行,什么类型都行)
1.比如把login方法作为切入点,表达式这么写 * login(..)
2.比如把login方法作为切入点,有两个字符串类型参数,表达式这么写 * login(String,String)
3.如果参数不是Java自带的,必须写全类名,比如参数是User,必须这么写
* login(com.org.study.User)
4.java自带参数和自定义参数可以连用
* login(String,com.org.study.User)
具体的代码如下:
1.比如把login方法作为切入点,表达式这么写 * login(..)
<!--所有的方法都作为切入点,加入额外功能-->
<aop:pointcut id="pc" expression="execution(* login(..))"/>
<!--目的把切入点和额外功能进行整合-->
<aop:advisor advice-ref="around" pointcut-ref="pc"></aop:advisor>
2.比如把login方法作为切入点,有两个字符串类型参数,表达式这么写 * login(String,String)
<!--所有的方法都作为切入点,加入额外功能-->
<aop:pointcut id="pc" expression="execution(* login(String,String))"/>
<!--目的把切入点和额外功能进行整合-->
<aop:advisor advice-ref="around" pointcut-ref="pc"></aop:advisor>
3.如果参数不是Java自带的,必须写全类名,比如参数是User,必须这么写
* login(com.org.study.User)
<!--所有的方法都作为切入点,加入额外功能-->
<aop:pointcut id="pc" expression="execution(* login(com.org.study.User))"/>
<!--目的把切入点和额外功能进行整合-->
<aop:advisor advice-ref="around" pointcut-ref="pc"></aop:advisor>
4.
4.java自带参数和自定义参数可以连用
* login(String,com.org.study.User)
<!--所有的方法都作为切入点,加入额外功能-->
<aop:pointcut id="pc" expression="execution(* login(String,com.org.study.User))"/>
<!--目的把切入点和额外功能进行整合-->
<aop:advisor advice-ref="around" pointcut-ref="pc"></aop:advisor>