@Autowired @Resource 注入Bean为null

今天碰到一个 奇怪问题
@Autowied、@Resource("tdsmBranchService") 都报NullPointerException

平时正常注入Bean时候,代码如下

@Slf4j
@Component
public class BXListener extends AnalysisEventListener {
    
   @Autowired
    private TdsmBranchService tdsmBranchService;
    
    @Override
    public void invoke(BXPojo data, AnalysisContext context) {
        if (bxPojoList.size() == BATCH_COUNT && errList.size() == 0) {
            // 集合存放数据达到500条并且读取无异常,即批量落库
            tdsmBranchService.tdsmBranchBatchAddBX(bxPojoList);//此处报了NullPointerException
        }
    }
    
}

异常情况时候,使用注入的 bean 出现了注入为null 的情况,具体原因不详,猜测应该与 @Component 注解有关或者是这个实现了某个接口然后在重写的方法中使用的 有关,因为在其他 @Service 、@Controller 注解的类中使用是没有问题的!

解决方式

@Slf4j
@Component
public class BXListener extends AnalysisEventListener {
    
    @Autowired
    private TdsmBranchService tdsmBranchService;
    public static TdsmBranchService branchService;

    @PostConstruct
    public void tdsmBranchService() {
        branchService = this.tdsmBranchService;
    }
    
    @Override
    public void invoke(BXPojo data, AnalysisContext context) {

        if (bxPojoList.size() == BATCH_COUNT && errList.size() == 0) {
            
            branchService.xxxMapper(bxPojoList);// 此处可以正常使用了
    
        }
    }
}


这应该只是其中一种解决方式,或许对于类似问题并不通用,但是他解决了我的问题!

你可能感兴趣的:(@Autowired @Resource 注入Bean为null)