关于:springboot工具类中@Autowired注入bean,用static直接修饰,静态方法使用bean时报空指针异常错误
一般写法:
public class DataAnalysis {
public static DataAnalysis dataAnalysis;
@Autowired
private IHlFlyDroneMessageService hlFlyDroneMessageService;
@Autowired
private HlFlyDroneInfoMapper hlFlyDroneInfoMapper;
@Autowired
private HlFlyPlanMapper hlFlyPlanMapper;
@Autowired
private HlFlyRelationMapper hlFlyRelationMapper;
引用:
QueryWrapper<HlFlyDroneInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("aircraft_name", hlFlyDroneMessage.getAircraftName());
List<HlFlyDroneInfo> hlDroneInfoList = hlFlyDroneInfoMapper.selectList(queryWrapper);
此时会报:NullPointerException异常
解决方案:
1、该类使用@Component注解
2、添加一个本类类型的静态字段
3、创建一个初始化方法,贴上@PostConstruct 标签,用于注入bean
4、创建方法调用mapper或service接口
5、最后直接在普通类中调用即可
@Component
public class DataAnalysis {
public static DataAnalysis dataAnalysis;
@Autowired
private IHlFlyDroneMessageService hlFlyDroneMessageService;
@Autowired
private HlFlyDroneInfoMapper hlFlyDroneInfoMapper;
@Autowired
private HlFlyPlanMapper hlFlyPlanMapper;
@Autowired
private HlFlyRelationMapper hlFlyRelationMapper;
@PostConstruct
public void init() {
dataAnalysis = this;
dataAnalysis.hlFlyDroneInfoMapper = this.hlFlyDroneInfoMapper;
dataAnalysis.hlFlyDroneMessageService = this.hlFlyDroneMessageService;
dataAnalysis.hlFlyPlanMapper = this.hlFlyPlanMapper;
dataAnalysis.hlFlyRelationMapper = this.hlFlyRelationMapper;
}
引用:
QueryWrapper<HlFlyDroneInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("aircraft_name", hlFlyDroneMessage.getAircraftName());
List<HlFlyDroneInfo> hlDroneInfoList = dataAnalysis.hlFlyDroneInfoMapper.selectList(queryWrapper);