方面不建议不同的项目

时间:2014-05-27 13:59:58

标签: java spring aspectj spring-aop

我有一个由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项目。)

在我看来它应该有效,或者我不明白

感谢。

1 个答案:

答案 0 :(得分:0)

当您使用spring-aop标记问题时,我假设您使用的是Spring框架。在这样的上下文中,@Aspect注释在ApplicationContext的初始化时被处理,你应该告诉Spring某个地方(在xml文件或Configuration类中)它应该在什么包中搜索注释。但我必须承认我自己从未尝试过。