Spring全局懒加载的优劣及使用方法详解
作者:项哥
这篇文章主要介绍了Spring全局懒加载的优劣及使用方法详解,Spring 懒加载是一种延迟加载的机制,它允许在需要时才创建和初始化对象,而不是在应用程序启动时就立即加载所有对象,通过懒加载,可以提高应用程序的性能和资源利用率,需要的朋友可以参考下
开启 Spring 全局 bean 懒加载的好处
- 可以加快启动速度,当服务依赖很多的时候,增速非常明显。
- 服务启动时不用考虑依赖,不需要满足所有的依赖就可以启动服务
- 建议 在 test, qa, dev 等环境酌情开启,在自己本机调试测试时可以只测试部分功能,只需要保证需要测试的功能依赖满足即可
- 生产环境一般不建议开启
- 本机单元测试的时候使用全局懒加载和 @mock 结合
开启 Spring 全局 bean 懒加载的坏处
- 屏蔽了启动时对 bean 的依赖检查,当 bean 不满足生成条件的时候需要等待实际调用才会暴露出来
- bean 在第一次使用的时候才初始化,影响第一次访问的速度
Spring 懒加载注意事项
- 当开启全局懒加载以后,某个 bean 不希望懒加载时可以加上 @Lazy(false) 注解
- quarz 定时任务不能延迟加载,如果延迟加载的话就可能导致定时任务失效
- sdk 静态方法调用会因为懒加载导致依赖的 bean 无法加载。例如
@Component public class Client { private static ServiceA service; public class Client(ServiceA service) { Client.service = service } // 当调用 Client.hello()方法时会报错 public static String hello() { return service.hello(); } }
开启 Spring 全局 bean 懒加载的方式
方法1.Spring boot 2.2 版本以上,可以设置 spring.main.lazy-initialization=true
方法2. 增加一个配置类 LazyInitBeanFactoryPostProcessor
import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; /** * 懒加载加快启动速度 * @author liufang */ @Profile(value = {"qa", "dev"}) @Configuration public class LazyInitBeanFactoryPostProcessor implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { for (String beanName : beanFactory.getBeanDefinitionNames()) { beanFactory.getBeanDefinition(beanName).setLazyInit(true); } } }
到此这篇关于Spring全局懒加载的优劣及使用方法详解的文章就介绍到这了,更多相关Spring全局懒加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!