我有一个由大约1000个bean组成的SpringMVC应用程序,启动大约需要两分钟。现在我正在研究为什么它启动太慢。我添加了一个BeanFactoryPostProcessor
来记录启动时间,并使用ApplicationListener
来侦听ContextRefreshedEvent
并记录ApplicationContext刷新的时间。结果表明,应用程序完成ApplicationContext
的初始化大约需要80秒。在查看代码后,我发现代码中有两个循环依赖项。
我想知道是否是循环依赖性导致ApplicationContext
启动太慢?我能做些什么来加快启动时间?
我尝试过的方法包括:
- 检查
@PostConstruct
以确定它是否是异步的 - 调整-Xmx和-Xms选项
- 将惰性init添加到bean中
似乎不起作用。
任何帮助都将不胜感激。
我假设您使用的是Spring Boot,然后隐式地使用注释组件扫描。因此,Spring将扫描每个类以创建Bean。一个可能的解决方案可以使用@ComponentScan("packageToScan"(而不是@ComponentScan。
然而,我不知道你的目标,但我认为如果你真的需要加快启动速度。