注入的实例变量在方面执行时为null
|
我在Spring AOP中遇到这个奇怪的问题,我希望有人能对此有所了解。
我正在使用CGLIB代理,执行以下方面时,我得到一个空指针:
@Aspect
@Component //i.e. Singleton
public class MyAspect {
private static final Logger logger = LoggerFactory.getLogger(MyAspect.class);
{
logger.debug(\"new instance of MyAspect\"); //Line 1
}
private AutowireCapableBeanFactory factory;
@Inject
public MyAspect(AutowireCapableBeanFactory factory) {
if (factory ==null) {
logger.debug(\"your factory is null\"); //Line 2
} else {
logger.debug(\"your factory is not null\");
}
this.factory = factory;
}
@AfterReturning(pointcut = \"@annotation(com.domain.annotations.MyAnnotation)\")
public void doSomething() {
if (factory ==null) {
logger.debug(\"your factory is null again\"); //Line 3
}
// this is a request scoped bean
MyRequest request = factory.getBean(MyRequest.class); //Line 4
if (request != null) {
logger.debug(\"No\");
}
else {
logger.debug(\"Yes\");
}
}
}
我在第4行收到NullPointerException。我可以看到在第3行的\“ factory \”为空,但是在第2行创建实例时,它不为空。我还在跟踪在第1行创建的实例。
该设计使用接口(JDK动态代理)进行工作。为什么我的实例变量在运行时变为空,并且可以解决这个问题?
没有找到相关结果
已邀请:
1 个回复
惭法搽