@Lookup不起作用-抛出空指针异常

时间:2019-10-21 12:38:57

标签: spring-boot

我正在尝试检查bean作用域,这是在singleton bean中注入的原型。当我使用@Lookup批注时,它将引发空指针异常。

在singletonBean类上赋予null指针...实际上,返回的null应该被cglib覆盖,并且应该返回原型范围内的bean的权利...

image/*

SingletonBean.java

AppConfiguration.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

import Bean.ProtoBean;
import Bean.SingletonBean;

@Configuration
 public class AppConfiguration {

@Bean
@Scope("prototype")
public ProtoBean protoBean() {
    return new ProtoBean();
}

@Bean
@Scope("singleton")
public SingletonBean singletonBean() {
    return new SingletonBean();
}

}

App.java

@Component
public class SingletonBean {

public SingletonBean() {
    System.out.println("SingletonBean");
}

public ProtoBean fromProto() {
    ProtoBean protoBean = getProtoBean();
//throws nullpointer here
    System.out.println("beans is here: "+protoBean.hashCode());
    return protoBean;
}

@Lookup
public ProtoBean getProtoBean() {
    return null;
}

}

1 个答案:

答案 0 :(得分:0)

我曾经用这种方法做过同样的事情,然后由于某种未知的原因,它停止工作,并产生了同样的NPE问题。我相信Spring在用GCLIB编译的实现替换您自己的实现方面存在问题。

最后,我使用了factory method approach,即,客户端bean具有Spring应用程序上下文,并使用它返回getProtoBean()中所需的依赖项。与使用@Lookup相比,它不那么简单,但似乎更可靠。