尝试将现有的Sping Boot 微服务转换为在GraalVM本机映像上运行时遇到了一个问题,即protobuf生成的protobuf是用protobuf-java分类的。
生成的类使用反射,需要将所有类添加到reflect-json. json中,而且许多类都有嵌套的Builder类,因此也需要添加这些类,对于拥有数百个此类protos的现有项目来说,这是非常繁琐的工作。
阅读protobuf documentation,它提到使用protobuf-javalite或运行GraalVM tracing agent自动生成reflect-json. json。
迁移到protobuf-javalite听起来很冒险,它是为Android设计的,并被宣传为不稳定的库。
每次修改proto后运行跟踪代理都会给开发过程增加很大的开销。
所以问题是,是否有人遇到了同样的问题,并能够以更优雅的方式解决这个问题,以及是否有任何better plans的protobuf-java来支持本机映像。
1条答案
按热度按时间ev7lccsx1#
在这种情况下,我发现最方便的方法是创建自定义特性(在这里描述),它在分析之前扫描类路径,并为运行时反射注册类。
创造简单的实用工具,为您做这件事。您只需要将其作为依赖项添加到项目中
https://github.com/ricantech/protobuf-graalvm-feature