分析弹簧容器以了解如何优化其启动时间的最佳方法是什么?
2022-09-03 03:09:28
我有一个应用程序变得相当大,Spring启动时间约为20秒。对于生产用途来说,这很好,但对于开发来说,这是一个很大的痛苦。
什么是一个好的分析工具或方法,可以准确地为我提供我需要的信息,以弄清楚什么花了这么长时间?也许这是我可以优化的东西?
我的应用程序是一个相当典型的弹簧/休眠Web应用程序。大约有50个数据库表和几百个bean(如200-300...我没有数)。有几种@Configurable豆。大量的组件扫描。我也在使用Spring Security。
我用log4j做了一些原始的分析 - 只是在INFO设置下。以下是一些需要花费一些时间的事情:
- Info 默认可听 BeanFactory:555 - 预实例化单例 - 2 秒
- INFO 会话工厂示例:202 - 构建会话工厂 - 2 秒
- INFO HibernateTransactionManager:415 - Using DataSource [com.mchange.v2.c3p0.ComboPooledDataSource......] 的 Hibernate SessionFactory for HibernateTransactionManager - 7 秒
有几件事最多需要0.5到1秒,但这3件事是最大的。