问题描述:
在构造函数中,使用全局属性,比如 service,而该属性是用 Autowired 自动注入的,这个时候,在类启动的时候,就会报空指针异常。
原因:
是 Spring 生命周期的问题,属性注入是在对象完全生成之后在注入的,换句话也就是说,是在构造函数执行后再注入。
解决方案:
private PropertyDictService propertyDictService;
public PartyOrganizationStaticsServiceImpl() {
super();
}
@Autowired
public PartyOrganizationStaticsServiceImpl(PropertyDictService propertyDictService) {
this.propertyDictService = propertyDictService;
map.put("man", this.propertyDictService.findPropertyDictByDomainNameAndDictDisplayName(
}
注意点:
1.要写无参构造函数,不然会报错:Superclass has no null constructors but no arguments were given
2.this.xx = xx 一定要写,然后用的时候要用 this.xx,而不是直接用形参
其他解决方案:
也可以用 @PostConstruct 注解,这个注解是在构造函数之后执行,在 init 方法之前,@PreDestroy 在 destroy 方法之后执行
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于