我有一个由5-6个项目组成的项目,它们之间具有依赖关系。
这里是:
@Aspect public class MonitoringAspect { Logger logger = LoggerFactory.getLogger(MonitoringAspect.class); @Around("execution(* *.*(..)) && @annotation(value)") public <T> Object logAround(ProceedingJoinPoint joinPoint, Monitored value) throws Throwable { Object output = null; Stopwatch stopwatch = new Stopwatch(); StringBuilder statistics = new StringBuilder(); statistics.append("\nStatistics: method [" + joinPoint.getSignature().getName() + "] "); statistics.append("arguments : " + Arrays.toString(joinPoint.getArgs())); stopwatch.start(); output = joinPoint.proceed(); // continue on the intercepted method stopwatch.stop(); statistics.append("Elapsed time in ms = " + stopwatch.elapsed(TimeUnit.MILLISECONDS)); logger.debug(statistics.toString()); return output; }}
和注释:
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Monitored { String value();
}
如果我使用来自同一项目的注释@Monitored,则方面和注释是&#34;物理&#34;找到,一切都工作查找,建议方法,但如果我尝试在不同的项目上使用它(如将它们放在一个infra项目,所以所有项目都可以使用它)。它不适用于这些项目(但它适用于我放入文件的infra项目。)
在我看来它应该有效,或者我不明白感谢。
答案 0 :(得分:0)
当您使用spring-aop
标记问题时,我假设您使用的是Spring框架。在这样的上下文中,@Aspect
注释在ApplicationContext
的初始化时被处理,你应该告诉Spring某个地方(在xml文件或Configuration
类中)它应该在什么包中搜索注释。但我必须承认我自己从未尝试过。