当前位置: 首页 > news >正文

5ecsgo启动失败2错误代码2_Spring Boot 2.2 增加了一个新功能,启动飞起~

a81af8b4a365721bb787c79b6f7e4395.png

前几天栈长分享了一个好玩的框架:一个比Spring Boot快44倍的Java框架!,是不是感觉 Spring Boot 略慢?今天讲一下 Spring Boot 添加的这个新特性,可以大大提升 Spring Boot 的启动速度。

最近,Spring团队宣布在 Spring Boot 2.2+ 中添加了一个重要功能:延迟加载,目前这个版本暂时还是快照版,不过我们可以先了解下怎么使用这个延迟加载功能。

延迟加载是什么意思?

有点经验的程序员应该都知道,在 Spring 框架中早已经支持延迟加载功能的,简单来说就是一个类的实例化,不需要 Spring 容器启动的时候就开始实例化,而是在第一次需要它的时候再实例化,这样大大提升了程序启动速度,也在一定程序上节省了系统资源。

怎么开启延迟加载?

在传统 Spring 项目中我们是这么做的:

<bean id="testBean" calss="cn.javastack.TestBean" lazy-init="true" />

以上 bean 配置是不是很熟悉?

没错,加了 lazy-init="true" 表示延迟加载,默认不加为false,表示容器启动时立即加载。

在 Spring 3.0+ 之后也可以这么做:

@Lazy
public TestBean testBean() {
	return new TestBean();
}

@Lazy:默认值为true,表示延迟加载;

Spring Boot如何开启?

由上面的例子我们可以知道,在任何 Spring Boot 版本中其实是支持 Bean 的延迟加载的,但这样是需要我们手工去配置的,这样会比较麻烦。

在 Spring Boot 2.2+ 中,延期加载将变得更加简单,有几下几种配置方式:

  • 参数:spring.main.lazy-initialization
  • 类:SpringApplication
  • 类:SpringApplicationBuilder

通过以上几种方式设置成:true,容器中的 Bean 就将配置成延迟加载。

Spring Boot 项目在 IDE 中再配合 DevTools 工具,可以使本发开发环境启动变得更快,400ms就可以启动起来了,大大提高了开发效率。

延迟加载有没有缺点?

延迟加载确实可以大大减少应用程序的启动时间,还能节省系统资源,那么问题来了,你可能会问,为什么不默认开启它呢?为什么还要额外提供一个配置?

听栈长道来,延迟加载确实有很多好处,但也会造成一些在启动的时候就能发现而要等到延迟加载才发现的问题,如:内存不足啊、类找不到啊、又或者是配置错误引发的系列问题。

还有一个问题就是,因为第一次请求的时候才去实例化,可能造成第一个请求变慢,响应延迟,体验不是很好。这样一来,对负载均衡和自动伸缩方面也会有不利影响。

结束语

正如我们在上面所分析到的,延迟加载确实可以显着改善启动时间,但也有一些明显的缺点,所以我们一定小心谨慎的启用它。或者我们可以对项目进行评估下,延迟加载真的对我们的项目有这么重要或者急迫么?

等正式版 Spring Boot 2.2 发布,栈长给再出一个实战文章,欢迎关注栈长的Java技术栈,不要走开。

版权申明:本文系 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

相关文章:

  • 现代科技概论_现代科技概论课程:力与运动3
  • 负载均衡技术全攻略
  • opencv图像分割python毕业设计_python用opencv完成图像分割并进行目标物的提取
  • SOA将使C++在2008年重现活力
  • 邮件合并保存为一个个单独的文档_巧用WPS“邮件合并”功能,让工作更加高效...
  • CIO构建网络整体安全解决方案
  • 微信小程序超级占内存_实测:微信小程序占多少内存?或许真没有你想象的那么“小”!...
  • 创新与价值
  • matlab如何求指标的权向量_层次分析法中,求出矩阵最大特征值对应的特征向量,再分别平方就是权向量么用matl......
  • js微信抢红包脚本代码_JavaScript语言基于AutoJs简易微信抢红包参考大佬修改
  • 冬天有点冰
  • pandas已知数值怎么找位置_pandas.dataframe中根据条件获取元素所在的位置方法(索引)...
  • ju 单元测试_.NET Core之单元测试(三):Mock框架Moq的使用 - 江浙沪柯蓝 - 博客园...
  • 中国当代资本的形成过程
  • ewebeditor未授权:功能被禁用请先配置授权_别让“配置错误”毁了你的云安全!送你7个安全锦囊!...
  • 【翻译】babel对TC39装饰器草案的实现
  • E-HPC支持多队列管理和自动伸缩
  • npx命令介绍
  • PAT A1017 优先队列
  • vue-loader 源码解析系列之 selector
  • windows下如何用phpstorm同步测试服务器
  • windows下使用nginx调试简介
  • 初识 beanstalkd
  • 分类模型——Logistics Regression
  • 今年的LC3大会没了?
  • 排序(1):冒泡排序
  • 前端性能优化--懒加载和预加载
  • 前端学习笔记之观察者模式
  • 前端之Sass/Scss实战笔记
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 学习笔记TF060:图像语音结合,看图说话
  • 智能合约Solidity教程-事件和日志(一)
  • 移动端高清、多屏适配方案
  • 整理一些计算机基础知识!
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #Spring-boot高级
  • (1)(1.9) MSP (version 4.2)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (排序详解之 堆排序)
  • (转)scrum常见工具列表
  • (转)程序员技术练级攻略
  • (转)一些感悟
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET委托:一个关于C#的睡前故事
  • @Autowired自动装配
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • @在php中起什么作用?
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [C\C++]读入优化【技巧】