1. 程式人生 > 實用技巧 >靜態方法中呼叫mapper,防止NullPointException空指標異常

靜態方法中呼叫mapper,防止NullPointException空指標異常

靜態方法中呼叫mapper

在Util工具類中的一個方法裡,需要呼叫mapper來實現功能,在靜態方法裡直接注入@Autowired會報NullPointException空指標異常.

嘗試過兩種方法實現功能:

方法一


1.類上新增@Service註解

2.建立靜態mapper物件

3.@Autowired注入set方法,呼叫靜態物件

@Service
public class CommonUtil{
    private static CommonMapper commonMapper;
    
    @Autowired
    public void setCommonMapper(CommonMapper commonMapper){
        CommonUtil.commonMapper = commonMapper;
    }
}

此方法可以正常執行,不會報空指標異常,但Sonar掃描時會提示:普通方法呼叫靜態欄位問題

建議修改方法:將非靜態方法中對靜態方法賦值的語句,單獨封裝一個靜態方法,並且加上synchronized關鍵字,這樣就不會導致多執行緒修改欄位導致的其他問題.

方法二


1.類上新增@Component註解

2.Autowired注入需要使用的mapper物件(非靜態的)

3.新增一個本類型別的靜態欄位

4.建立初始化方法,貼上@PostConstruct標籤,用於注入bean

5.建立方法呼叫mapper

@Component
public class CommonUtil{
    @Autowired
    private CommonMapper commonMapper;
    
    private static CommonUtil commonUtil;
    
    @PostConstruct
    public void init(){
        checkUtil = this;
        checkUtil.commonMapper = this.commonMapper;
    }
}

方法中呼叫checkUtil.commonMapper即可