Bean异步初始化,让你的应用启动飞起来
💡
原文中文,约11100字,阅读约需27分钟。
📝
内容提要
介绍异步加载中间件bean提升应用启动速度的方法,以HSF为案例,通过实现BeanFactoryPostProcessor和自定义NewHsfSpringConsumerBean来安全异步HSFSpringConsumerBean。可以提高应用启动速度。
🎯
关键要点
- 系统启动耗时250s以上时,应用启动速度主要瓶颈在于bean的初始化过程。
- 中间件bean的初始化逻辑涉及网络IO,串行执行导致启动速度慢。
- 异步加载中间件bean可以提升应用启动速度。
- 解决方案是自动扫描可批量异步的中间件bean,并利用线程池并行执行初始化逻辑。
- 自定义AsyncInitBeanFactory替换原有BeanFactory以支持异步执行init和afterPropertiesSet方法。
- 实现ApplicationContextInitializer接口以在refresh之前替换beanFactory。
- 自定义AsyncCommonAnnotationBeanPostProcessor支持异步执行@PostConstruct方法。
- 通过实现BeanFactoryPostProcessor接口收集带有@HSFConsumer注解的bean信息以进行异步初始化。
- 自定义NewHsfSpringConsumerBean解决动态代理对象生成的风险,确保初始化完成后再注入。
- 通过InstantiationAwareBeanPostProcessorAdapter接口替换原有HSFSpringConsumerBean为NewHsfSpringConsumerBean。
- 最终实现了中间件bean的批量异步初始化,显著提升了应用启动性能。
➡️