SpringMVC返回json数据时使用@Accessors(fluent = true, chain = true)发生字段丢失

文章讲述了在开发过程中遇到的一个问题,即接口返回数据时丢失了除ID外的其他字段。原因是使用了@Accessors注解,其fluent属性导致getter方法改变,SpringMVC在序列化时找不到相应属性。解决方案是避免在用于MVC返回数据的类上使用此注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:

和平时写接口一样,写完后测试时发现返回到前端的数据只剩下了ID,

思路:

id这个字段是父类的方法,也就是子类的字段发生了丢失,因为已经排查过数据是有的,但是返回的时候没有这个字段,而且SpringMVC默认是jackson序列化,稍微想了一下,返回序列化是默认会调用Bean的get方法获取属性,所以看了下java Bean,发现了这个@Accessors注解不知道被谁加上了,发现了问题。

@Accessors注解

fluent

不写默认为false,当该值为 true 时,对应字段的 getter 方法前面就没有 get,setter 方法就不会有 set。

chain

不写默认为false,当该值为 true 时,对应字段的 setter 方法调用后,会返回当前对象。

解决

因为使用了fluent属性,导致get方法变了,springMVC在序列化json时候找不到对应属性,所以发生了属性丢失。

建议如果用到MVC返回数据时,就不要用@Accessors注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值