原代码:注入commonService对象失败
@Autowired private static CommonService commonService;
public static List<Map<String, Object>> getCode(String codeType, boolean allOption ,String orderType){ return commonUtil.commonService.getCode(codeType, allOption, orderType); }
commonService在static状态下不能够被依赖注入,会抛出运行时异常java.lang.NullPointerException,为什么呢?
静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入.
解决方式1:
@Autowired private CommonService commonService; private static CommonUtil commonUtil; @PostConstruct public void init() { commonUtil = this; commonUtil.commonService = this.commonService; } public static List<Map<String, Object>> getCode(String codeType, boolean allOption ,String orderType){ return commonUtil.commonService.getCode(codeType, allOption, orderType); }
本文探讨了在Spring框架中,尝试将commonService对象注入到静态变量时遇到的NullPointerException异常原因。由于静态变量不属于对象层面,Spring无法进行依赖注入。文章提供了一种解决方案,通过@PostConstruct注解初始化静态成员变量,实现依赖注入。

被折叠的 条评论
为什么被折叠?



