<div class="iteye-blog-content-contain" style="font-size: 14px">
在学习到springaop的过程中,发现大部分的关于aop:before和aop:after的示例
都是无参或一个参数的,
比如:
<aop:before method="before" pointcut="execution(* cn.xxxx..*.*(..))"/>
或
<aop:before method="before" arg-names="param" pointcut="execution(* cn.xxxx..*.*(..)) and args(param)"/>
?
但当想对多个参数的方法定义切入点和切面却少有示例,通过baidu也没有办法找到。
经过多次尝试,发现如下方式可正确的获取多参数方法的需要的参数。
通知方法代码:
public class DollarPayServiceImpl implements PayService{
@Override
public void pay(String str1,String str2) {
System.out.println("say by dollar"+str1+str2);
}
}
切入点代码:
public class LoggingUtils {
public void logAfter(Object point,Object point2){
System.out.println("--------------this is logAfter : "+point+point2+"------------");
}
}
?切面定义:
<!-- 多个参数的切入及参数的获取,获取个数较少时使用args(..,str2) -->
<aop:after pointcut="execution(* com.dz.common.testAOP..*.pay(java.lang.String,java.lang.String)) and args(str1,str2)"
method="logAfter(java.lang.Object,java.lang.Object)" arg-names="str1,str2"/>
?如此所有的开发工作已经完成。
测试代码:
@Autowired
PayService payService;
@Test
public void test01(){
payService.pay("s1", "s2");
}
?结果如下:
say by dollars1s2
--------------this is logAfter : s1s2------------
?
</div>
?
spring aop使用shema方式配置多参数的切入点的方式
原文:http://554757915.iteye.com/blog/2251886