我尝试使用AspectJ方面观察我的分裂器以进行记录。但似乎不可能。方面永远不会被调用,IntelliJ告诉我建议没有方法。我正在使用AspectJ 1.8.1。
你会在github找到一个SSCCE:https://github.com/flaviait/StreamSpliteratorAspectJExample
具有注释方面的Spliterator:
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,分裂器和方面是否存在任何已知问题?也许有人可以帮助我。那太好了!