Spring AOP: - 动态传递方法参数给建议

时间:2016-07-22 11:37:36

标签: spring web-services model-view-controller aop spring-aop

我的ServiceImpl类包含多个方法。我有一个LoggingAspect,我想根据ServiceImpl中调用的方法动态地将方法参数传递给一个通知。我如何实现这一点?在下面的代码中,我的方法有4个参数,但我的另一个方法有5个参数,第三个有3个。那我如何根据方法参数的数量动态传递参数?

@Aspect
public class LoggingAspect {

@Before("allGenericAppServiceImplMethods(userid,galleryId,sid,imageName)")
public void LoggingAdvice(JoinPoint joinPoint,String userid,String     galleryId,String sid,String imageName){
System.out.println("String values are "+userid+" "+sid+" "+galleryId+" "+imageName);
}

@Pointcut("execution(public * com.nrollup.service.impl.GenericAppServiceImpl.*(..)) && args(userid,galleryId,sid,imageName)")
public void allGenericAppServiceImplMethods(String userid,String galleryId,String sid,String imageName)
{
}

}

1 个答案:

答案 0 :(得分:0)

您可以使用周围的建议。一个代码片段供您参考:

public void myAdvice(final ProceedingJoinPoint joinPoint) throws Throwable
{
    Object[] arguments = joinPoint.getArgs();
}

一旦你有了arguments数组,你可以根据需要对它进行操作。

您可以使用joinPoint.proceed()继续进行函数调用。