我正在用Spring 4测试AspectJ编译时编织(一旦我让它工作,我想在我的项目中使用它)。我有以下服务类别:
@Service
public class HelloService {
public String sayHello(){
return sayHello2();
}
public String sayHello2(){
return "Hello from AOP2!";
}
}
这是我的AspectJ建议:
@Component
@Aspect
public class ExecutionTimeAdvice {
@Around("execution(* com.senyume.aop.service..*(..))")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
long startTime = System.nanoTime();
Object retVal = pjp.proceed();
long endTime = System.nanoTime();
long duration = (endTime - startTime);
logger.info("Method " + pjp.getSignature() + " took " + (duration/1000000.0) + " ms)");
return retVal;
}
}
我正在尝试根据 Spring 文档启用 AspectJ 编译时编织。由于我正在使用注释,因此我尝试遵循此线程中提到的建议。
当我运行应用程序时,我没有看到应用于 sayHello2() 的建议。我错过了什么?我在这里做错了什么?
github上的完整源代码
您的 Gradle 构建使用 Java 编译器来构建项目。实际使用AspectJ编译器怎么样?如果你想使用AspectJ,这将有很大帮助。 ;-)
您可以使用 Gradle AspectJ 插件。