当前位置: 首页 > news >正文

JAVA成员变量首字母小写,第二个字母大写报错问题(原因:Lombok与Spring冲突)

1、问题现象:

JAVA类里定义成员变量使用首字母小写,第二个字母大写

@Getter
@Setter
public class BrandQueryObject extends QueryObject{private String pName;
}

结果页面报错,无法找到类型为 cn.wolfcode.ssm.query.BrandQueryObject 的对象上的属性 pName:

在这里插入图片描述

2、问题原因:

针对首字母小写,第二个字母大写的这种驼峰命名时,使用Lombok的@Getter和@Setter注解生成的getter和setter方法分别是:

public String getIPhone() {return iPhone;
}public void setIPhone(String iPhone) {this.iPhone = iPhone;
}

而正常场景下及Spring中对象的getter和setter方法应该是:

public String getiPhone() {return iPhone;
}public void setiPhone(String iPhone) {this.iPhone = iPhone;
}

也就是说Lombok与Spring针对这种首字母小写,第二个字母大写的对象的解析是不同的,而这也就自然而然影响到默认的Jackson的解析,导致返回给前端的属性名称不是我们预期中的名称,则前端判断取得的值为null,继而报错。

3、问题探讨与官方态度:

详见该文章:多年前就有人已经在lombok的github提出过对应的issue

4、解决方案:

  1. 方案一:不使用该格式命名的成员变量,即避免首字母小写后续直接跟第二个字母大写的命名。
  2. 方案二:利用Idea生成符合Spring规范的get/set,即手动生成get和set方法,或者使用编译器自动生成的:
    public String getpName() {return pName;}public void setpName(String pName) {this.pName = pName;}
  1. 方案三:利用@JsonProperty(value = “xIndex”),强制Jackson在反序列化时给属性重新命名

完事收工,THX

http://www.lryc.cn/news/167665.html

相关文章:

  • Python入门教程 |Python 错误和异常
  • API商品接口对接使用:从理论到实践
  • 解决stable diffusion webui1.6 wd1.4 tagger加载失败的问题
  • Python学习-实现简单的http服务
  • #循循渐进学51单片机#变量进阶与点阵LED#not.6
  • 访问者模式
  • epoll 的实现
  • 怎么用excel管理固定资产
  • 记录crack某IDE插件过程
  • Android DEX相关,ART加载OAT文件
  • laravel框架 - 安装初步使用学习 composer安装
  • API实战教程:使用身份证OCR识别API构建一个应用
  • 前端-layui动态渲染表格行列与复杂表头合并
  • IDM(Internet Download Manager)下载器2024最新版本如何下载?
  • 前端综合练手小项目
  • 接口优化1
  • 【无公网IP内网穿透】 搭建Emby媒体库服务器并远程访问「家庭私人影院」
  • QML android 采集手机传感器数据 并通过udp 发送
  • stableDiffusion安装
  • QT基础教程(QPushButton及信号与槽)
  • Android 实战项目分享(一)用Android Studio绘制贝塞尔曲线的艺术之旅
  • Windows系统关机后自动重启的解决方法
  • 微服务如何改变软件开发:实战经验与最佳实践分享
  • 安装深度(Deepin)系统
  • Leetcode: 645.错误的集合 题解【超详细】
  • 闲鱼自动化软件——筛选/发送系统 V22已经测试完毕
  • 数学建模__动态规划
  • 【IoT】生产制造:锅仔片上机做 SMT 加工吗?
  • Stable Diffusion代码简介
  • 操作系统的运行机制