遇到这样一个问题,代码如下:
package com.wonders.stpt.organTree.util;import java.util.HashMap;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;import com.wonders.stpt.organTree.service.TorganRelationService;@Component("organTreeUtil")public class OrganTreeUtil { private static HashMap<String,String> receiversMap = null; private static HashMap<String,String> configersMap = null; private static TorganRelationService torganRelationService; public static TorganRelationService getTorganRelationService() { return torganRelationService; } @Autowired(required=false) public void setTorganRelationService( @Qualifier("torganRelationService")TorganRelationService torganRelationService) { OrganTreeUtil.torganRelationService = torganRelationService; } static { init(); } public static void init(){ if(receiversMap==null){ //receiversMap = new HashMap<String, String>(); //receiversMap = (HashMap<String, String>) torganRelationService.getReceivers(); } if(configersMap==null){ //configersMap = new HashMap<String, String>(); //configersMap = (HashMap<String, String>) torganRelationService.getConfigers(); } } public static HashMap<String,String> getReceiversMap(){ synchronized(receiversMap){ if(receiversMap==null){ receiversMap = (HashMap<String, String>) torganRelationService.getReceivers(); } } return receiversMap; } public static HashMap<String,String> getConfigersMap(){ synchronized(configersMap){ if(configersMap==null){ configersMap = (HashMap<String, String>) torganRelationService.getReceivers(); } } return configersMap; } public static void refresh(){ receiversMap = null; configersMap = null; } }
可以看出,本来想在静态代码块中直接初始化map 的值,但运行后发现spring报空指针,导致不能生成bean,
而报空指针的行数就是 调用service的地方。之后觉得可能是 执行到static块时,spring还未注入。。。
修改后,运行成功。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow