前几天栈长分享了一个好玩的框架:一个比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技术栈微信公众号,在后台回复:boot,获取栈长整理的更多的 Spring Boot 教程,都是实战干货,以下仅为部分预览。

  • Spring Boot 读取配置的几种方式
  • Spring Boot 如何做参数校验?
  • Spring Boot 最核心的 25 个注解!
  • Spring Boot 2.x 启动全过程源码分析
  • Spring Boot 2.x 新特性总结及迁移指南
  • ……

最后,你们是怎么应用延迟加载功能的,欢迎留言分享~

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "boot" 可获取更多 Spring Boot 教程,转载请原样保留本信息。

转载于:https://www.cnblogs.com/javastack/p/10674750.html

Spring Boot 2.2 增加了一个新功能,启动飞起~相关推荐

  1. Spring boot 使用QQ邮箱进行一个验证登入

    Spring boot 使用QQ邮箱进行一个验证登入 QQ邮箱开启权限 在QQ邮箱设置->账户里面,往下拉找到这个开启,手机号验证成功后会有一串英文字符串是待会儿要用到的密码. prom.xml ...

  2. PyCharm 2019.3发布,增加了哪些新功能呢?

    来源 | PyCharm官网 整理 | 猪哥 校正 | 豌豆花下猫 Python的IDE(Integrated Development Environment 集成开发环境)非常多,如:VS Code ...

  3. 花里胡哨?一起来看看 PyCharm 2019.3 增加了哪些新功能吧

    来源 | PyCharm官网 整理 | 猪哥 校正 | 豌豆花下猫 Python的IDE(Integrated Development Environment 集成开发环境)非常多,如:VS Code ...

  4. iOS培训之iOS 8正式发布:增加多个新功能

    iOS培训之iOS 8正式发布:增加多个新功能 广州传智播客作为华南地区iOS培训的领头羊,对iOS培训课程的研究都是走在互联网发展的潮流最前沿,把最新最好的技术教导给学生.在课程体系外,还有很多有趣 ...

  5. 高德地图轨迹回放_高德地图上线了一个新功能….

    文.路人甲TM 德地图这两天刚上线了一个叫做「家人地图」的功能,所谓家人地图顾名思义,就是你可以通过高德地图组建一个家人圈,在这个圈子里面你可以看到你的家人在什么位置,当你的家人到达什么位置的时候自动 ...

  6. 微信怎么更改绑定的游戏服务器,注意啦!微信号可以改了!这里还有一个新功能...

    原标题:注意啦!微信号可以改了!这里还有一个新功能 安卓最新版的微信 支持修改微信号了! 消息一出 就登上热搜第一 ▼ 安卓手机更新到7.0.15以后,显示可以修改微信号 那些过往时刻, 那些你觉得微 ...

  7. 5000人小程序 服务器,微信又有重大变化!好友上限要突破5000人?红包、小程序都要变,还有一个新功能…...

    原标题:微信又有重大变化!好友上限要突破5000人?红包.小程序都要变,还有一个新功能- 微信接下来的新版本,有望推出"短内容"功能,让人人都可以创作! 今天上午, 在广州举办的微 ...

  8. 微信整了一个新功能,专治各种借钱不还

    ‍ 微信又出新功能了!微信最新上了一个小程序:腾讯电子签,让不少网友高呼"良心"! 当今这个社会最让人感到害怕的事情莫过于有人找你借钱了,网上都说"找你借钱的人最后都成了 ...

  9. 从零搭建Spring Boot脚手架:增加通用的功能2

    1. 前言 今天开始搭建我们的kono Spring Boot脚手架,首先会集成Spring MVC并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细节.如果你看了本文有什么问 ...

最新文章

  1. java jmx连接不上_JMX连接服务端失败
  2. Zabbix监控之常用snmp-OID
  3. 激光振镜误差校正算法C语言,动态聚焦激光振镜扫描系统的误差分析及图形校正算法.pdf...
  4. 若只让我推荐一名LiveVideoStackCon上海的讲师,就是他
  5. 使用frp进行内网穿透的实例
  6. 【BZOJ1040】【codevs1423】骑士,第一次的基环外向树DP
  7. java导出word文档_PHPWord导出word文档
  8. 如何判定选择的日期与当前日期的前后关系
  9. Bailian4069 买手机【序列处理+排序】
  10. grafa导出数据图标_第5章 数据与可视化 - Grafana与数据可视化 - 《Prometheus操作指南》 - 书栈网 · BookStack...
  11. java中输出红字_使用JDIC实现Java界面嵌入Web浏览器 出红字
  12. 【源码】迭代法求根的matlab算法
  13. Oracle数据库SQL优化详解
  14. 安卓模拟器按键_逍遥安卓模拟器PC版-逍遥安卓模拟器下载v7.2.8.0
  15. PLM基础概述(解决方案架构师认证:PLM基础) | 达索系统百世慧
  16. 【IoT】创业:一份价值主张画布送给你
  17. java.io.IOException: 远程主机强迫关闭了一个现有的连接。
  18. 以太网网卡的结构和工作原理
  19. 丢手帕问题 java_丢手帕问题java 实现
  20. 有苦有乐的算法 --- 判断一颗二叉树是否是完全二叉树、是否是平衡二叉树、是否是搜索二叉树

热门文章

  1. 自定义tt文本模板实现MySql指数据库中生成实体类
  2. 不会点SQLite,都不好意思说自己是开发的
  3. Exchange 2010 批量移动邮箱和增加移动请求并发数
  4. java - 抽象类、接口、内部类
  5. 0-13 sudo用户管理
  6. 网易财报暗藏玄机,不经意间已编织出电商大网
  7. 云服务器文件同步,Windows 8:本地文件与云服务器同步
  8. 电脑显示器闪屏_时尚超薄可升降:华硕新品家用护眼显示器MZ27AQL
  9. java文件下载用什么技术_Java中实现文件上传下载的三种解决方案(推荐)
  10. 企业千人千面管理模式_华世界集团获国家高新技术企业认定