我有以下基于代码的样式方面,它在代码中查找字段级注释,并使用该字段作为参数调用方法。这就是它的样子..
cover
上面的方法工作正常,但我想将它转换为基于Spring或AspectJ的Annotation,类似于此。发现AspectJ文档有点令人困惑,任何提示都会有所帮助..
public aspect EncryptFieldAspect
{
pointcut encryptStringMethod(Object o, String inString):
call(@Encrypt * *(String))
&& target(o)
&& args(inString)
&& !within(EncryptFieldAspect);
void around(Object o, String inString) : encryptStringMethod(o, inString) {
proceed(o, FakeEncrypt.Encrypt(inString));
return;
}
}
答案 0 :(得分:1)
不确定您正在阅读哪些文档 - https://eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.html上的页面向您展示了如何从代码转换为注释样式。我承认它们不像它们那样全面。
基本上:
您的原件变得像:
@Aspect
public class EncryptFieldAspect
{
@Pointcut("call(@need.to.fully.qualify.Encrypt * *(java.lang.String)) && target(o) && args(inString) && !within(need.to.fully.qualify.EncryptFieldAspect)");
void encryptStringMethod(Object o, String inString) {}
@Around("encryptStringMethod(o,inString)")
void myAdvice(Object o, String inString, ProceedingJoinPoint thisJoinPoint) {
thisJoinPoint.proceed(new Object[]{o, FakeEncrypt.Encrypt(inString)});
}
}