开发过程中,在MaintBusiness.java中注入一个对象:
@Autowired
private RegionService regionService;
使用的时候,发现这个service为null,将MaintBusiness加上注解@Component交给Spring管理,仍不能解决问题。
追随代码,发现调用的时候是classforName的newInstance实例化的MaintBusiness,和new的差不多。
问题很明确,MaintBusiness是被反射调用的,并没有被spring管理。
解决办法:1、在MaintBusiness中,添加一个静态对象;
private static MaintBusiness maintBusiness;
2.然后采用@PostConstruct修饰一个方法:
@PostConstruct
public void init(){
maintBusiness = this;
}
调用方式:
maintBusiness.regionService.updateRegionDataDom(dataDom);
此时的maintBusiness.regionService就不为空,并且解决了new regionService时候里面dao也为空的问题。