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

news2024/11/19 7:33:38

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.coloradmin.cn/o/1014449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】常用工具(上)

Linux 常用工具 一、Linux 软件包管理器 yum1. 软件包2. 查看软件包3. 安装/卸载软件4. yum 其他指令的功能 二、Linux 编辑器 - vim 使用1. vim 的基本概念2. vim 的基本操作(1)光标移动(命令模式)(2)光标…

两届 TOKEN 2049 之间,孙宇晨和波场的布局与野心

2022 年在新加坡举办的 TOKEN 2049 大会上,波场TRON创始人、火币全球顾问委员会成员孙宇晨作为特邀嘉宾出席,并曾提出“波场 TRON 下一步的发展目标是成为主流金融机构”的生态愿景,揭示了波场生态的全新发展方向,以及孙宇晨作为区…

企业架构LNMP学习笔记49

Redis数据持久化操作: 数据、持久化(数据在服务或者软件重启之后不丢失)。 如果数据只存储在内存中,肯定会丢失,实现持久化,就需要把数据存储在磁盘中(hdd ssd)。 memcached在宕机…

Linux下生成可执行程序的每一步过程以及链接库的初步认识

程序的翻译 程序在形成可执行程序之前都经历过一系列十分复杂的过程,也就是我们程序的翻译,程序的翻译经过以下阶段: 预处理(进行宏替换) 编译(生成汇编) 汇编(生成机器可识别代码) 连接&#…

嵌入式C 语言中的三块技术难点

​ C 语言在嵌入式学习中是必备的知识,甚至大部分操作系统都要围绕 C 语言进行,而其中有三块技术难点,几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来,一定让你看明白了。 0x01 指针 指针是公认…

Python 人工智能编程指南:基础、库和工具大全解析

Python 已成为人工智能 (AI) 和机器学习领域的通用语言。其广泛的应用、强大的库生态系统和用户友好的语法使其成为人工智能爱好者、数据科学家和研究人员的理想选择。在这份综合指南中,我们将探讨用于 AI 编程的 Python 基础知识,深入研究关键库&#x…

CKA真题分析-2023年度

补充信息 #补全 # apt install bash-completion source <(kubectl completion bash)# kubectl config get-contexts # cat ~/.kube/config |grep current# kubectl config current-context kubectl config use-context复制粘贴 ctrlshiftc ctrlshiftv # edit编辑时只能使…

ashx后台获取GET、POST、JSON方式提交的刷卡信息,并回应驱动读卡器显示文字播报语音

本示例使用设备&#xff1a; RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) <% WebHandler Language"C#" Class"HttpReader" %>using System; using System.Web; using System.IO; using Newtonsoft.Json;publ…

Ubuntu 22.04.3 LTS安装

最近换电脑了&#xff0c;准备重新装一下ubuntu。多年前装过ubuntu很老的版本&#xff0c;现在发现官网最新的LTS版本是 Ubuntu 22.04.3 LTS 版本。那重新装的话&#xff0c;肯定装最新的版本了。这里我记录下自己的安装过程&#xff0c;作为以后的笔记查看。 我的环境&#x…

《C++ primer plus》精炼(OOP部分)——对象和类(4)

“学习是人类进步的阶梯&#xff0c;也是个人成功的基石。” - 罗伯特肯尼迪 文章目录 友元函数利用友元函数重载<<运算符重载部分示例&#xff1a;矢量类 友元函数 先看看在上一章中我们作为例子的代码&#xff1a; class Student{string name;int grade;int operator…

【开发工具】idea 的全局搜索快捷键(Ctrl+shift+F)失效

文章目录 前言1. 取消 输入法的快捷键&#xff08;推荐使用&#xff09;2.更改 idea的快捷键3. 热键占用总结 前言 当你发现在idea 中看到用于全局搜索的快捷键就是 CtrlshiftF&#xff0c;可是怎么按都不管用的时候&#xff0c;你就不要再执着于自己的操作继续狂点电脑按键了…

SAP 自定义搜索帮助创建与使用

如何创建自定义的搜索帮助 1. 进入事务码SE11,自定义一个搜索帮助的名字 2. 维护数据收集的选择方法以及对话行为和参数信息 点击激活&#xff0c;至此&#xff0c;搜索帮助创建完成 3. 可以给数据表中的对应字段添加搜索帮助 SE11进入&#xff0c;输入数据表名&#xff0c;…

PHP 如何创建一个 composer 包 并在 项目中使用自己的 composer sdk 包

第一步创建一个composer SDK项目 创建一个 composer.json文件或使用 命令 &#xff08;如果不清楚怎么弄 直接跳过即可&#xff0c;一般都会默认配置&#xff09; composer init这是生成的composer.json文件 将自己要使用的包添加到 require 中&#xff0c;如果没有require则…

【计算机视觉 | CNN】Image Model Blocks的常见算法介绍合集(四)

文章目录 一、Dilated Bottleneck with Projection Block二、NVAE Generative Residual Cell三、NVAE Encoder Residual Cell四、Bottleneck Transformer Block五、Spatial Feature Transform六、Big-Little Module七、Scale Aggregation Block八、Multiscale Dilated Convolut…

Zookeeper 启动失败【Cannot open channel to 3 at election address...】

文章目录 完整报错信息解决方法1.检查文件夹权限2.未监听所有IP3.IP映射名称与 ID 不对应 完整报错信息 Cannot open channel to 3 at election address hadoop121/192.168.10.121:3888 java.net.ConnectException 解决方法 1.检查文件夹权限 检查当前用户是否拥有 Zookeep…

基于SpringBoot的点餐系统

基于SpringBootVue的点餐系统、食堂餐厅点餐系统、前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、用户 管理员…

創能Tronenergy:全球首創,TRON能量算力增值平台

全球知名的TRON能量交易平台Tronenergy再次突破&#xff0c;推出了令人振奮的重磅功能&#xff01;作為全球首創的USDT轉賬0手續費平台&#xff0c;Tronenergy為用戶帶來了一場USDT轉賬革命&#xff0c;立即體驗Tronenergy&#xff0c;享受便捷、經濟的轉賬服務&#xff0c;同時…

Leetcode162. 寻找峰值

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即…

CSRF和SSRF有什么不同?

文章目录 CSRF复现SSRF复现启动环境漏洞复现探测存活IP和端口服务计划任务反弹shell 区别 CSRF复现 打开dvwa&#xff0c;将难度调为low&#xff0c;点击CSRF&#xff0c;打开后发现有一个修改密码的输入框&#xff1a; 在这里修改密码&#xff0c;并用bp抓包&#xff0c;在…

eNSP网络学习

一、eNSP 1.什么是eNSP eNSP(Enterprise Network Simulation Platform)是一款由华为提供的免费的、可扩展的、图形化操作的网络仿真工具平台&#xff0c;主要对企业网络路由器、交换机进行软件仿真&#xff0c;完美呈现真实设备实景&#xff0c;支持大型网络模拟&#xff0c;让…