【发布时间】:2019-03-29 10:13:24
【问题描述】:
我在 spring boot 应用程序中使用 aspectj aop,因为我们知道 Aspectj 对象可以通过调用 Aspects.aspectOf(MyAspect.class) 来获取。 Foo 内部有一个依赖关系 MyAspect.class ,所以我按以下方式设置字段。
@Aspectj
public class MyAspect{
private Foo foo ;
public void setFoo(Foo foo){
this.foo = foo;
}
}
@Bean
public Foo foo(){
Foo foo = new Foo();
MyAspectj myAspectj = Aspects.aspectOf(MyAspectj.class);
myAspectj.setFoo(foo);
return foo;
}
我的问题是,Foo bean 初始化为时已晚,其他 bean 中的逻辑已经开始运行并初始化了 MyAspectj。原来是NullPointException,因为没有Foo。
public void handler(EventMessage eventMessage) {
JoinPoint var3 = Factory.makeJP(ajc$tjp_0, this, this, eventMessage);
LoggerAspect var10000 = LoggerAspect.aspectOf();
Object[] var5 = new Object[]{this, eventMessage, var3};
var10000.loggerOut((new MessageHandler$AjcClosure3(var5)).linkClosureAndJoinPoint(69648));
}
我的问题是,如何在使用任何代码之前正确初始化 MyAspectj.class ?
【问题讨论】: