Lombok的@Data注解踩坑,@Setter的大小写问题

以前在处理前端请求的实体类的时候,都是用Lombok的@Data注解对实体类进行getter、setter以及toString的声名,今天处理实体类的时候,发现生成的setter方法和Java Bean的命名规则不一致。(@Data的作用是为我们定义的字段添加Lombok的@ToString、@EqualsAndHashCode、 @Getter方法、@RequiredArgsConstructor 和 为非final字段添加@Setter)

我要生成getter、setter的字段是:

    private List<Map<String,String>> yAxis;private List<XAxis> xAxis;

在我使用@Data时生成的代码和实际要生成的代码比较如下:

//@Data生成的setter方法
setYAxis()  setXAxis()
//实际需要的setter方法
setyAxis()  setxAxis()

Java Bean的4种命名特殊规范中有一种情况:如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。

字段的首字母大小写发生了变化。这个变化意味着,我在使用@Data注解生成的getter方法得到的属性值是"yaxis"和"xaxis",而实际上我需要的属性值为"yAxis"和"xAxis",这也就导致了我返回给前端的数据,前端无法识别,从而出错。

JavaBean getter/setter命名规范[特例]

一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。

但是,还有一些特殊情况:

  1. 如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。

  2. 如果属性名的前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。

  3. 如果属性名的首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。

  4. 如果属性名以"is"开头,则getter方法会省掉get,set方法会去掉is。例如属性名为isOK,方法是isOK/setOK。
    需要注意的是有些开发工具自动生成的getter/setter方法,并没有考虑到上面所说的特例情况,会导致bug的产生。

我们在定义JavaBean的属性名时,应该尽量避免属性名的头两个字母中任意一个为大写以及属性名以"is"开头。

后台返回给前端json字段的大小写问题,Lombok的坑@Data,@Getter相关推荐

  1. 后台返回给前端json字段的大小写问题,Lombok的坑

    Lombok的@Data注解踩坑,@Setter的大小写问题 以前在处理前端请求的实体类的时候,都是用Lombok的@Data注解对实体类进行getter.setter以及toString的声名,今天 ...

  2. 那些年遇到的后台返回的奇葩json数据

    前言 开发多年,遇到的后台有很多,不同的人写的代码风格不一样,写出来的接口也不一样.下面就请求失败的接口举个例子,让大家看看有哪些奇葩的接口.反正我看的想打人了有木有? 1. 返回一片空白. 大哥,你 ...

  3. Java后台返回和处理JSon数据的方法

    1.下载JsonObject相关jar包 在这里,我们使用JsonObject来将Java类型数据转换成Json类型,首先要下载该库相关的jar包,下载地址如下: http://files.cnblo ...

  4. 后台返回给前端数据拆分成三级菜单

    拿到的数据格式是 里面根据参数进行判断属于哪一级 根据catalogstep参数进行判断的层级 首先会定义三个新的数组 然后再进行三个数组的合并添加 最后返回的一个结果就是 这个里面注意的参数有pid ...

  5. img src请求后台值值能判断_图片src拼接后台返回ID

    本文地址:http://www.cnblogs.com/veinyin/p/8507403.html  在学习 CSS 时只了解了给固定地址,但是如果给的是一个需要拼接的地址就蒙了,以下是基于 Vue ...

  6. elementUI表单验证怎么显示后台返回的错误信息

    elementUI的表单验证使用非常方便,此处不赘述,网上的方法和官方文档都有描述. 如果后台返回的错误信息要显示在表单验证错误提示的地方,而不是另外弹出提示框或者,实现效果如下图: 这个效果要如何实 ...

  7. 接收后台返回的文件流或 base64 后下载打印 pdf 功能

    后台正常返回的流 //dataResult.data是后台返回的流 let pdfUrl = window.URL.createObjectURL(new Blob([dataResult.data] ...

  8. 后台返回前端 is....开头字段被屏蔽

    后台返回前端 is....开头字段被屏蔽 (Java) 背景 : 与往常一样前端联调接口 , 收到前端同事的反馈说 : 两个相同的接口返回的某个字段却不一样. 实体类 : public class T ...

  9. POI动态导出Excel,后台返回文件流,前端responseType格式下载

    针对各个表的数据导出,实现的代码往往相似,出于这个目的,开启自己代码简略之旅.本文是针对.xls的excel文件. 1.思路描述 ①.确定各个模板的.xls文件格式 ②.定义模板的存在的参数,如第一行 ...

最新文章

  1. Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些
  2. Word遇到问题需要关闭
  3. kaptcha验证码实现,配合spring boot使用
  4. Spring Data JPA初使用 *****重要********
  5. 怎么看登陆哪个用户名_面试教材看哪个版本?抽到的版本与备考的不一致怎么办?...
  6. SESSION和COOKIE的使用
  7. 拓端tecdat|使用OpenCV在Python中进行图像处理
  8. 最新京东批量试用助手
  9. 大文件前端直接上传至七牛
  10. Android相机预览设置适配及显示方式
  11. 欢迎百合网联合创始人慕岩,追梦人创服李圆峰莅临龙测科技投资考察
  12. 微信导航的门户网站(曾经的创业故事4)
  13. 《关于炒股有意思的几个“故事” 》
  14. Java 中验证时间格式的 4 种方法
  15. 总结yolov5不同模型的网络结构图
  16. 固高控制卡Home回零的使用
  17. 怎么用域名访问网站?
  18. 动态面板:拖动滑块解锁(1)
  19. Catia幕墙BIM阵列优化培训视频教程
  20. 财务应付结算系统设计-应付款和付款单(含付款风险控制)

热门文章

  1. c++代码转为go_Go语言学习笔记六--string编码
  2. php 链接远程oracle,PHP连接远程oracle输出数据
  3. Java FilePermission getActions()方法与示例
  4. 织梦cms生成首页html的php文件,织梦DedeCMS定时自动生成首页HTML的实现方法
  5. java math 类_Java Math类静态双层(double d)示例
  6. if快还是switch快?解密switch背后的秘密
  7. Kafka面试题全套整理 | 划重点要考!
  8. Oracle创建视图、通过视图创建表
  9. C++总结篇(4)内存管理
  10. 七、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Text组件和Button组件使用