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

2023-09-16 11:18:17

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

更多推荐

免费,开源,可批量的离线图片文字提取软件OCR

Umi-OCR文字识别工具免费,开源,可批量的离线OCR软件适用于Windows7x64及以上免费:本项目所有代码开源,完全免费。方便:解压即用,离线运行,无需网络。批量:可批量导入处理图片,结果保存到本地txt/md/jsonl多种格式文件。也可以即时截屏识别。高效:采用PaddleOCR-jsonC++识别引擎。只

AI实战营第二期 第八节 《MMSegmentation代码课》——笔记9

AI实战营第二期第八节《MMSegmentation代码课》【课程链接】https://www.bilibili.com/video/BV1uh411T73q/【讲师介绍】张子豪OpenMMLab算法工程师【学习形式】录播+社群答疑【作业布置】本次课程为实战课,需提交笔记+作业。课程大纲:环境配置预训练模型预测图片、视

Prompt、RAG、微调还是重新训练?选择正确的生成式 AI 的方法指南

文章目录一、前言二、主要内容三、总结🍉CSDN叶庭云:https://yetingyun.blog.csdn.net/一、前言这篇博客试图根据一些常见的可量化指标,为您选择适合您用例的生成式人工智能方法提供指导。生成式AI正在以惊人的速度发展,许多组织都在尝试利用这项先进技术来解决业务问题。虽然有很多流行的方法可供选

漫谈:C语言 C++ 迷惑的语句、分号、大括号

C语言设计得很麻拐。初学者经常面临这样的麻烦:多了一个分号,if条件没通过却执行了少了一个分号,编译不下去,报奇怪的错误if(a>0);++x;这个代码的“++x”无论如何都会被执行,旁观者很快就能看出来是因为if语句后面多了一个分号。structA{inta;}这个代码会导致其后的代码(甚至是另外一个文件,取决于头文

人工智能术语翻译(六)

文章目录摘要UVWXYZ摘要人工智能术语翻译第六部分,包括U、V、W、X、Y、Z开头的词汇!U英文术语中文翻译常用缩写备注UglyDucklingTheorem丑小鸭定理Unbiased无偏UnbiasedEstimate无偏估计UnbiasedSampleVariance无偏样本方差UnconstrainedOpti

Wi-Fi7将带来前所未有的快捷、稳定的互联网,更快的传输速度

随着科技的飞速发展,无线连接技术也日渐成熟与先进。Wi-Fi,作为我们日常生活和工作中不可或缺的一部分,也正在迎来技术的革新。我们将有机会见识到新一代的Wi-Fi技术--Wi-Fi7,它将带来前所未有的快捷、稳定的互联网体验。首先,Wi-Fi7将会为我们带来更快的传输速度。预计新一代Wi-Fi(Wi-Fi7)的最高理论

快速入门:如何使用HTTP代理进行网络请求

今天我要和大家分享如何使用HTTP代理进行网络请求的快速入门指南。如果你想了解如何通过代理服务器发送和接收网络请求,那么这篇文章将为你提供一个简单而全面的指南。第一部分:HTTP代理的基础知识HTTP代理服务器充当了客户端和目标服务器之间的中间人角色。当你发送网络请求时,请求首先发送到代理服务器,然后由代理服务器将请求

基于Xml方法的Bean的配置-实例化Bean的方法-构造方法

SpringBean的配置详解Bean的实例化配置Spring的实例化方法主要由以下两种构造方法实例化底层通过构造方法对bean进行实例化构造方法实例化bean又分为无参方法实例化和有参方法实例化,在Spring中配置的<bean>几乎都是无参构造该方式,默认是无参构造方法,在此处不赘述。下面讲解有参构造方法实例化Be

Mybatis的mapper.xml批量插入、修改sql

今天要有个功能,要进行一批数据的插入和修改,为了不频繁调用数据库,所以想到了批量插入和修改,因为从毕业后,就没写过批量插入和批量修改,所以在这里记录一下,避免后续再遇到忘记怎么写了批量插入(传入的参数是List<实体>list):<insertid="insertList"keyColumn="id"keyProper

【Spring Boot】专栏合集,快速入门大全

作者简介前言作者之前写过一个SpringBoot的系列,包含自动装配原理、MVC、安全、监控、集成数据库、集成Redis、日志、定时任务、异步任务等内容,本文将会一文拉通来总结这所有内容,不骗人,一文快速入门SpringBoot。专栏地址:https://blog.csdn.net/joker_zjn/category

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理packagecom.example.demo.controller;importcom.example.demo.service.IDemoService;importlombok.AllArgsConstructor;importlombok.extern.slf4j.Slf4j;importor

热文推荐