我碰巧有一个@Aspect
声明一个方法,该方法被另一个方面的切入点拦截。这些方面是使用编译时编织创建的,并且容器是使用 Spring 实例化的。
我注释了我的方面,@Configurable
告诉 Spring 该组件是在容器外部创建的。Log
在这方面,我碰巧也有一个对象的静态引用。总而言之,代码看起来像这样
@Aspect
@Configurable
public class MyAspect {
private static final Log log = LogFactory.getClass(MyAspect.class);
// Autowired dependencies
// Pointcuts and advice
// Happens to be a pointcut of some other Advice
@Asynchronous
private Object someMethod(...) {
}
}
在 AspectJ 编译期间,我没有看到预期的消息,如下所示:
weaveinfo Join point 'method-call(java.lang.Object mypackage.someMethod(...))' in Type 'mypackage.MyAspect' (MyAspect.java:30) advised by around advice from 'anotherpackage.AsynchronousAspect' (from AsynchronousAspect.java))
正如预期的那样,此时从未调用第三方建议。但是,如果我在建议中添加一个简单的日志条目,例如
log.debug("Join point invoked!");
然后编译正确发生,所有方面都连接(包括我的第三方依赖项)并正确调用。
添加日志条目对改变我的假设有何影响?