Spring Inject仅在postConstruct

时间:2017-08-28 22:16:22

标签: spring autowired

我试图将一个类注入另一个类,并且在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
}

}

1 个答案:

答案 0 :(得分:0)

问题在于

BorderLayout.LINE_END

您正在创建一个NEW对象而不使用spring bean。考虑重构工厂以使用创建的spring bean(Inject)。