我有一個簡單的控制器方法,它使用了Spring事務的propagation=Propagation.REQUIRES_NEW
特性。Spring Propagation.REQUIRES_NEW nullfies autowired repositories
@Autowired
GzrelimRepository gzrelimRepository;
@Autowired
RelimService relimService;
@RequestMapping("/startScanning")
@Transactional(propagation=Propagation.REQUIRES_NEW)
private void scanResults(@NotNull String matchingSrc, @NotNull String rangeStart, @NotNull String rangeEnd, @NotNull Integer scanPid){
gzrelimRepository.pScanDupPidmWrap(matchingSrc, rangeStart, rangeEnd, scanPid);
}
當我調用這個方法時,gzrelimRepository爲空,我得到空指針異常錯誤。
如果我從傳播中移除requires_new,事情就會起作用。
使用requires_new的原因是,掃描需要很多時間,我想在自己的獨立新事務中開始掃描,並在正常的現有事務中休息其他事物。
我的方法是否正確?我應該嘗試其他方法嗎?
設置「@ Transactional」的屬性不會改變Spring創建和自動裝載你的bean的方式,所以如果'relimService'爲null,問題就在其他地方。 – Andreas
其不是relimService爲空。其抱怨\t \t gzrelimRepository;爲空 – Mayurb
顯示完整的履單棧。 – Andreas