我试图将一个类注入另一个类,并且在post构造期间注入的类按预期工作,当我尝试在其他方法中使用该类时,它会抛出一个空指针。
如果您看到以下代码,在我的Service类中,我看到postconstruct方法正在从地图中打印预期值。但是,Sayhello方法会引发NPE。
下面有什么问题(代码不会编译......只是想把它放在高位)
@RestController
@Produces(MediaType.APPLICATION_JSON)
@RefreshScope
public class ServRes{
@Inject
ServiceFact service;
@RequestMapping("/test")
public Response helloWorld(){
Service myservice = service.getService();
myservice.sayHello();
}
我的ServiceFact
@Named
public class ServiceFact{
public Service getService(){
return new Service();
}
我的ServiceClass
@Named
public class Service{
private HashMap dict;
@Inject
Private DictLoader dicLoader
@PostConstruct
public void load(){
this.dict = dicLoader.getDict();
dict.get("1"); // prints 12212
}
public void sayHello(){
System.out.print(dict.get("1")); //throws NPE
}
}
答案 0 :(得分:0)
问题在于
BorderLayout.LINE_END
您正在创建一个NEW对象而不使用spring bean。考虑重构工厂以使用创建的spring bean(Inject)。