gpt4 book ai didi

java - 分析 spring 容器以了解如何优化其启动时间的最佳方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:52:17 25 4
gpt4 key购买 nike

我有一个相当大的应用程序,Spring 启动时间大约是 20 秒。对于生产使用,这很好,但对于开发,这是一个很大的痛苦。

有什么好的分析工具或方法可以准确地为我提供我需要的信息来找出需要这么长时间的原因?也许这是我可以优化的东西?

我的应用程序是一个相当典型的 spring/hibernate web 应用程序。大约有 50 个数据库表和数百个 bean(比如 200-300 ......我没数过)。有一些 @Configurable bean。大量组件扫描​​。我也在使用 Spring Security。

我用 log4j 做了一些 primitize 分析 - 只是在 INFO 设置。以下是一些需要一些时间的事情:

  • INFO DefaultListableBeanFactory:555 - 预实例化单例 - 2 秒
  • INFO SessionFactoryImpl:202 - 构建 session 工厂 - 2 秒
  • INFO HibernateTransactionManager:415 - 使用 Hibernate SessionFactory 的 DataSource [com.mchange.v2.c3p0.ComboPooledDataSource......] 用于 HibernateTransactionManager - 7 秒

有几件事最多需要 0.5 到 1 秒,但这 3 个是最长的。

最佳答案

您可以尝试的一个选项是使用 default-lazy-init 选项来延迟初始化 bean。 Spring 在初始化期间初始化所有单例范围的 bean。阅读 reference doc延迟实例化 bean 部分.

确保参数化该值,以便您可以在开发期间将其更改为 true,在生产部署期间将其更改为 false。

组件扫描速度很慢。 Refer to this post关于如何在使用 Autowiring 时禁用此功能。

关于java - 分析 spring 容器以了解如何优化其启动时间的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8253424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com