Я использую aspectj aop внутри приложения весенней загрузки, поскольку мы знаем, что объект Aspectj можно получить, вызвав Aspects.aspectOf(MyAspect.class)
. Внутри MyAspect.class
есть зависимость Foo
, поэтому я установил поле следующим образом.
@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;
}
Мои проблемы в том, что инициализация bean-компонента Foo
слишком поздняя, логика в другом 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, прежде чем какой-либо код его использует?