今天被一个 bug 给整笑了

2024-05-17 20:40:24 +08:00
 humingk

有个属性被我们下游系统加了一个@Deprecated注解,计划不久后废弃,然后我们上游系统直接把这个字段搞丢了,排查了半天才发现Protostuff序列化会直接丢掉@Deprecated注解字段。。。

Protostuff 的官方解释:

4844 次点击
所在节点    Java
12 条回复
povsister
2024-05-17 21:09:57 +08:00
protostuff 和 protobuf 是啥关系。
话说设计成这样的框架,开发者真的有写过项目代码吗。
ob
2024-05-17 22:30:09 +08:00
@Deprecated 不是应该在注释里面加吗?注解上加被丢弃感觉没毛病。
kristofer
2024-05-17 22:52:22 +08:00
@ob #2 你是在认真的说吗。。
w568w
2024-05-17 22:56:24 +08:00
1. 弃用( Deprecated )和移除( Removed )完全是两码事;
2. 框架内的归框架,这种需求应该框架定义注解,而不是直接套用类似语义(而且实际上不类似)的系统注解。

这开发者水平堪忧,不仅不懂英文、不懂 Java ,也不懂软件设计。
Goooooos
2024-05-17 23:41:23 +08:00
java 一般注解 deprecated 是表示后面某个版本可能移除
querysecret
2024-05-18 08:37:20 +08:00
要是直接给我移除,我还需要加 @Deprecated?哈哈哈哈
lrh3321
2024-05-18 08:53:33 +08:00
没有 @ Tag 注解的情况下,会忽略 @ Deprecated ? 如果是一开始就有的特性,只能怪用的人看文档不仔细了。
tyrantZhao
2024-05-18 09:22:04 +08:00
一眼看成 protobuf 。。。
sariya
2024-05-18 11:55:34 +08:00
同看成 protobuf…… Deprecated 直接移除真的难顶
guyeu
2024-05-18 14:27:04 +08:00
Vertx 的下一个大版本就有 @ProtobGen 了,这个不会干这种奇怪的事情
mmdsun
2024-05-18 14:29:52 +08:00
private transient 比如用关键字判断。用 @Deprecated 就很奇怪了
lovelylain
2024-05-19 11:12:29 +08:00
@querysecret protobuf 是通过标号标记字段,他这个没有标号,如果序列化也是跟 protobuf 一样为了省流不保留 key 名,删字段就不能直接删除而是要加标记。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1041732

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX