spring aop使用注解从切面中获取参数

package com.aops;

//第一种方式

//参考:https://www.jianshu.com/p/ff8d0cd69a7e

 

 

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Pointcut;

import org.springframework.stereotype.Component;

 

@Aspect

@Component

public class Aop {

@Pointcut("execution(public String com.xlm.Man.eat(String,int)) && args(a,b) ")

public void k(String a,int b) {

}

 

@Around("k(a,b)")

 

public Object kkk(ProceedingJoinPoint pj,String a,int b) {

Object o = null;

System.out.println("事务开始...");

System.out.println("我在eat方法前执行:"+a);

 

try {

o = pj.proceed();

} catch (Throwable e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(o);

System.out.println("我在eat方法后执行:"+b);

System.out.println("事务结束..."+pj.getSignature().getName());

return o;

}

 

}

package com.aops;

 //第二种方法
//参考:https://www.cnblogs.com/softidea/p/6123307.html
 
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class Aop01 {
	@Pointcut("execution(public String com.xlm.Man.eat(..)) ")
	public void k(String a,int b) {
	}

	@Around("execution(public String com.xlm.Man.eat(..))")
	public Object kkk(ProceedingJoinPoint pj) {
		Object[] args = pj.getArgs();
//		for (Object a : args) {
//			System.out.println(a);
//			
//		}
		Object o = null;
		System.out.println("事务开始...");
		System.out.println("我在eat方法前执行:"+args[0]);

		
		
		try {
			o = pj.proceed();
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(o);
		System.out.println("我在eat方法后执行:"+args[1]);
		System.out.println("事务结束..."+pj.getSignature().getName());
		return o;
	}

}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值