spring aop使用shema方式配置多参数的切入点的方式

<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>

猜你喜欢

转载自554757915.iteye.com/blog/2251886