最近在 reddit 上推广自己的关于 Spring 启动优化小项目,之前也在 v 站推广过:
评论区有个评论者 ta 的意见是没有意义,理由如下:
一开始看到这个评论还挺难过的,毕竟辛苦做的东西,被别人说的一文不值。后面去了解了一下这个开发者说的 GraalVM ,发现确实很强大,编译出的 native 启动速度确实非常的快。
所以我也开始认真的思考这个项目是否真的有意义,这个项目的背景是公司为了降低线上故障时回滚止血时间,要求应用启动时长必须要小于指定的时间,结合一些可以显著提高 Java 启动速度方法无观测不优化的观点实现的,最大的一个优化应用是:将启动时间由原来的将近 6 分钟优化至 3 分钟。
如果没有公司的强推,那还有没有必要这样做 spring 应用启动的优化,就像评论说的直接使用 GraalVM 。个人觉得还是有必要的:
- 目前公司的应用不是基于 GraalVM 的,如果要享受 GraalVM 带来的启动极速,还是需要进行大量的应用改造
- GraalVM 对反射、动态代理有很多的限制,升级应用很容易踩坑,还需要大量的回归测试
- 日常的项目启动慢本身其实不在 spring 本身,而是项目中依赖的各种中间件的初始化、富客户端的初始化等导致的,升级完 GraalVM 后这些耗时应该还是存在的
以上就是我能想到的观点,感觉这个评论者是 GraalVM 的忠实粉丝,而且认为这是在发布垃圾消息,所以选择在 v 站想和大家再讨论一下,spring 启动时长的优化是否有必要