Spring Boot 2.5.1接收EntityModel参数报getActualType()空指针警告
触发原因
该问题是Spring Data REST 3.5.1版本(对应Spring Boot 2.5.1版本)的内置bug,错误出现在聚合引用反序列化模块的逻辑中:程序在处理EntityModel<T>泛型类型的反序列化时,对_links属性的类型校验逻辑存在缺陷,没有做非空判断就直接调用TypeInformation.getActualType()方法,导致空指针异常抛出,最终以警告形式打印。
Spring Boot 2.4.4对应的Spring Data REST 3.4.x版本未引入该问题逻辑,因此相同代码不会触发警告。该警告不会影响接口的正常响应,但会产生冗余的错误日志。
解决方案
- 版本升级:将Spring Boot版本升级到2.5.2及以上正式版本,该bug已在后续迭代中被官方修复,升级后警告会自动消失
- 版本回退:如果当前项目对版本兼容性要求较高,可暂时回退Spring Boot到2.4.x系列稳定版本,避开存在问题的Spring Data REST版本
- 临时兼容处理:如果暂时无法调整Spring Boot版本,可修改Controller层代码,不直接使用
EntityModel<SoPojo>作为@RequestBody接收参数,改为先接收普通SoPojo参数,后续业务逻辑中手动封装为EntityModel类型即可规避警告
内容的提问来源于stack exchange,提问作者Jan Nielsen
相关产品推荐
相关产品推荐

