Spring Boot中Manager类加@NoArgsConstructor导致ModelMapper为空的原因
问题原因解析
核心问题:构造函数优先级导致依赖注入失效
你的JobPositionManager类同时使用了@Service、@AllArgsConstructor和@NoArgsConstructor三个注解,这直接引发了modelMapperService为空的错误:
@AllArgsConstructor是Lombok注解,会自动生成包含所有类成员变量的构造函数。Spring管理@Service标注的Bean时,原本会通过这个全参构造函数,自动把ModelMapperService这类依赖注入到JobPositionManager实例中。- 但当你额外添加
@NoArgsConstructor后,Spring会优先选择无参构造函数创建JobPositionManager实例。这种情况下,类中的modelMapperService成员变量完全没有被赋值,始终为null,调用它的方法时自然触发空指针错误。
无关说明:ModelMapper配置不影响本次问题
你提到的.setSkipNullEnabled(true)是ModelMapper自身的映射规则配置,和依赖注入失败的问题没有关联,无需针对这个配置做调整。
快速解决
直接删除@NoArgsConstructor注解,Spring就会回到使用@AllArgsConstructor生成的全参构造函数完成依赖注入,modelMapperService就能正常被赋值了。
内容的提问来源于stack exchange,提问作者Deniz
相关产品推荐
相关产品推荐

