一个具有声明服务的类RestitController
@Autowired
private RestitService restitService;
我想声明一个类变量(因为它将被RestitController的许多方法使用),并用RestitService方法的结果填充它。
问题是当我写一些像
这样的东西private final HashMap<K, V> map = restitService.makeMap();
我得到NullPointerException
,因为此时restitService
为null
。
还有其他方法来组织我的代码吗?我真的很想避免在每次需要地图时都调用该方法。
感谢您的帮助,对不起我粗略的英语。
编辑:Luigi的解决方案很好。 只有一件事:我的HashMap在我的代码中实际上是一个WeakHashMap。映射已在Tomcat的开头正确加载,但一旦使用它的方法被调用它就是空的。我将类更改为HashMap,问题就消失了。猜猜垃圾收集者是不合时宜的清洁工作。答案 0 :(得分:7)
使用构造函数注入
private RestitService restitService;
private final HashMap<K, V> map;
@Autowired
public RestitController(RestitService restitService) {
this.restitService = restitService;
this.map = restitService.makeMap();
}
答案 1 :(得分:0)
您也可以使用@PostConstruct方法来执行此操作。
@Autowired
private RestitService restitService;
private final HashMap<K, V> map=new HashMap<K, String>();
@PostConstruct
public void initIt() throws Exception {
this.map.putAll(restitService.makeMap());
}