@Autowired
XXXMapper xxxMapper;
@Autowired
XXXMapper xxxMapper;
@Autowired
XXXMapper xxxMapper;
@Autowired
XXXMapper xxxMapper;
private int CYear;
private int Ryear;
private int Ayear;
private int Vyear;
public XXXServiceImpl(){
this.CYear = xxxMapper.getCurrentYear();
this.Ryear = xxxMapper.getCurrentYear();
this.Ayear = xxxMapper.getCurrentYear();
this.Vyear = xxxMapper.getCurrentYear();
}
当我启动项目时,发现报了空指针,原因是容器启动时要调用构造器创建bean时,结果确试图调用属性的方法,因为此时属性还未赋值,因此报了空指针。修正方案如下:
@Autowired
XXXMapper xxxMapper;
@Autowired
XXXMapper xxxMapper;
@Autowired
XXXMapper xxxMapper;
@Autowired
XXXMapper xxxMapper;
@Autowired
XzqhManager xzqhManager;
private int CYear;
private int Ryear;
private int Ayear;
private int Vyear;
@PostConstruct
public void init() {
this.CYear = xxxMapper.getCurrentYear();
this.Ryear = xxxMapper.getCurrentYear();
this.Ayear = xxxMapper.getCurrentYear();
this.Vyear = xxxMapper.getCurrentYear();
}
但此方案有个弊端,就是项目初始化后确定了各个year的值,如果数据库发生变动但是项目没有重启,那么就会出现各个year用的是旧的值。