把 Spring Boot 编译成原生二进制,启动从 4 秒降到 80 毫秒,内存占用近乎腰斩。代价是:你需要重新理解反射、动态代理与资源加载。
构建期不知道运行期才会触发的反射,必须显式写进 reflect-config.json;Jackson 的序列化、Hibernate 的懒加载、各种 SPI 都容易在运行时爆 ClassNotFoundException。用 native-image-agent 跑一遍测试用例,能自动收集大部分配置。
native-image -H:ReflectionConfigurationFiles=reflect-config.json \
-H:ResourceConfigurationFiles=resource-config.json \
-jar app.jar
只要配置齐全,原生镜像就是 Serverless 与边缘部署的杀手锏。