我正在使用Spring AOP并具有以下方面:
@Aspect public class LoggingAspect { @Before("execution(* com.mkyong.customer.bo.CustomerBo.addCustomer(..))") public void logBefore(JoinPoint joinPoint) { System.out.println("logBefore() is running!"); System.out.println("hijacked : " + joinPoint.getSignature().getName()); System.out.println("******"); } }
以上方面拦截了addCustomer方法的执行。addCustomer方法将字符串作为输入。但是我需要在addCustomer方法内部记录传递给方法的输入logBefore。 有可能这样做吗?
addCustomer
logBefore
首先,你可以使用JoinPoint#getArgs()返回的方法,其中Object[]包含建议方法的所有参数。你可能需要进行一些转换,具体取决于你想对它们进行什么处理。
JoinPoint#getArgs()
Object[]
其次,可以args像这样使用切入点表达式:
// use '..' in the args expression if you have zero or more parameters at that point @Before("execution(* com.mkyong.customer.bo.CustomerBo.addCustomer(..)) && args(yourString,..)")
那么你的方法可以改为
public void logBefore(JoinPoint joinPoint, String yourString)