在注解aspectJ中按值修改方法的参数
Modify parameter of method by value in annotation aspectJ
我开始学习 aspectJ,我想知道是否可以在文件 .aj 中创建方面而不是在 .java 中创建注释,这是我的示例:
我有这方面修改方法中的参数值
@Around("execution(* *(..)) && @annotation(Te)")
public Object setupParam(ProceedingJoinPoint pjp) throws Throwable {
Object[] args = pjp.getArgs();
MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod();
Te myAnnotation = method.getAnnotation(Te.class);
if (args != null)
args[0] = (int) args[0] * myAnnotation.w();
return pjp.proceed(args);
}
而且我不知道如何在 .aj 文件中创建这个方面,这可能吗?
是的,这是可能的。
public aspect MyAspect {
public MyAspect() {
System.out.println("Aspect instance created");
}
pointcut myPointcut(ParameterType parameter)
: ("execution(* *(..)) && @annotation(Te));
Object around(ParameterType parameter) : myPointcut(parameter) {
// Business logic here
// 'thisJoinPointStaticPart' will give you access to join point
// 'this' will give you access to advice instance itself
// `return proceed();` will allow you to execute advised join point
}
}
我建议使用 Eclipse AspectJ Developer Tool,它提供了许多有用的功能,例如智能自动完成、javadoc 和方面可视化等。这可能会帮助您更快地学习。
我开始学习 aspectJ,我想知道是否可以在文件 .aj 中创建方面而不是在 .java 中创建注释,这是我的示例:
我有这方面修改方法中的参数值
@Around("execution(* *(..)) && @annotation(Te)")
public Object setupParam(ProceedingJoinPoint pjp) throws Throwable {
Object[] args = pjp.getArgs();
MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod();
Te myAnnotation = method.getAnnotation(Te.class);
if (args != null)
args[0] = (int) args[0] * myAnnotation.w();
return pjp.proceed(args);
}
而且我不知道如何在 .aj 文件中创建这个方面,这可能吗?
是的,这是可能的。
public aspect MyAspect {
public MyAspect() {
System.out.println("Aspect instance created");
}
pointcut myPointcut(ParameterType parameter)
: ("execution(* *(..)) && @annotation(Te));
Object around(ParameterType parameter) : myPointcut(parameter) {
// Business logic here
// 'thisJoinPointStaticPart' will give you access to join point
// 'this' will give you access to advice instance itself
// `return proceed();` will allow you to execute advised join point
}
}
我建议使用 Eclipse AspectJ Developer Tool,它提供了许多有用的功能,例如智能自动完成、javadoc 和方面可视化等。这可能会帮助您更快地学习。