一、背景
公司项目引入JPA改造了数据层,方便项目适配多种类型数据库,但也逐渐变得臃肿,模块启动速度缓慢。原先web模块启动一次大概需要14s,而改造后启动一次大概需要44s,不便于项目的开发、调试和部署。
二、猜测
网上查了一下关于项目启动速度优化的一些内容,大部分其实就是减少启动时扫描的包,但检查了整个项目,其实我们的项目包扫描的粒度已经很合适了,没有优化的空间。想到改造前后最大的区别就在于数据层的不同,感觉可能是引入了JPA影响,毕竟JPA是面向接口编程,而且项目中定义的JPA接口有100+个,项目启动时动态代理加载的类比较多,导致启动速度比较慢。有了排查方向,后面就比较好处理。
三、懒加载
因为猜测是项目启动的时候加载的类比较多导致的,于是通过懒加载的方式看一下启动效果。在StartServer用全局懒加载的方式启动项目:
public class StartServer {