0

我尝试使用 AspectJ 方面查看我的拆分器以进行日志记录。然而这似乎是不可能的。方面永远不会被调用,IntelliJ 告诉我建议没有任何方法。我使用 AspectJ 1.8.1。

您将在 github 上找到 SSCCE:https ://github.com/flaviait/StreamSpliteratorAspectJExample

带注释方面的拆分器:

public class RepositorySpliterator<T> implements Spliterator<T> {

    @Override
    @SpliteratorWatch
    public boolean tryAdvance(Consumer<? super T> action) {
        ...
    }
}

我的观点:

@Aspect
@Component
public class SpliteratorWatchAspect {

    private static final Logger logger = LoggerFactory.getLogger(SpliteratorWatchAspect.class);

    @After("@annotation(spliteratorWatch)")
    public void watch(JoinPoint joinPoint, SpliteratorWatch spliteratorWatch) throws Throwable {
        ...
    }

}

最后但并非最不重要的注释:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SpliteratorWatch {
}

我在不同的环境中做了几次,效果很好。Java 8 流 api、拆分器和方面是否存在任何已知问题?也许有人可以帮助我。那很好啊!

4

0 回答 0