我在Spring Boot应用程序中使用Aspectj aop,因为我们知道可以通过调用Aspects.aspectOf(MyAspect.class)
获得Aspectj对象。 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?
答案 0 :(得分:0)
https://www.baeldung.com/spring-depends-on
SpringdependOn可以解决这个问题,除了MyAspectj
之外,每个对象都由spring管理,所以我可以在Bean
上使用dependsOn来使用MyAspect
。