11、springboot项目启动时对容器中的bean进行延迟初始化
springboot项目启动时对容器中的bean进行延迟初始化
预初始化:
Spring Boot在启动应用时,会启动Spring容器,当启动Spring容器时,Spring会自动初始化容器中所有的singleton Bean——这是默认行为
预初始化的好处:
1、项目启动时,就初始化了容器中所有的组件,因此后续提供服务时速度更快
2、项目启动时,就需要初始化了应用的所有的组件,这样就可提前发现项目中某个组件的错误。
延迟初始化:
启动Spring容器时,不初始化容器中任何Bean,而是等到应用需要某个Bean时,才去初始化该bean。
延迟初始化的好处:
降低内存开销——所有组件是按需启动的,因此有些组件可能根本不需要被启动,从而降低了系统开销
启动延迟初始化有如下3种方式:
方法1: 调用SpringApplicationBuilder对象的lazyInitialization(true)方法。
方法2: 调用SpringApplication对象的setLazyInitialization(true)方法。
方法3: 在application.properties文件中配置如下代码:spring.main.lazy-initialization=true
方法二:调用SpringApplication对象的setLazyInitialization(true)方法。
1、先在User类添加一个构造器,在方法体打印一句话,然后启动主配置类,发现打印成功,说明在启动项目的时候,就会预初始化容器中的这个User对象。
2、用方法二取消预初始化,启动延迟初始化。
问题: 如图,启动了延迟初始化,可是为什么这个User对象还是被预初始化了?
原因:
此处设置的延迟初始化仅对Spring Boot应用自动扫描的组件有效。
对于用@Import或@ImportResouce方式额外导入的配置类或配置文件——它们可以指定自己的预初始化行为。
这个User对象就是通过xml 配置文件和@ImportResouce注解额外导入的,所以此处的延迟初始化对User对象无效。(XML自定义配置文件配置User对象)
因此上面所设置的启动延迟初始化的行为,对@Import或@ImportResouce所导入的配置文件是无效的。
这时候我们再定义一个Dog类,用注解@Component修饰,意味着这个类是spring容器中的一个组件,springboot应用会自动加载该组件。
默认的预初始化:
启动延迟初始化:
可以看出启动延迟初始化后,这个受springboot自动管理的Dog对象就没有在启动的时候被预初始化了。
针对这句:
对于用@Import或@ImportResouce方式额外导入的配置类或配置文件——它们可以指定自己的预初始化行为。
因此上面所设置的启动延迟初始化的行为,对@Import或@ImportResouce所导入的配置文件是无效的。
可以这么指定自己的与初始化行为:
对于自定义xml配置文件中的单个bean,想要其延迟初始化,可以在指定bean添加lazy-init=“false”。
如果想要整个自定义的xml配置文件的bean都延迟初始化,那么就在文件头添加: default-lazy-init=“true”
从启动日志中也可以看出没有初始化这个bean对象。
相关文章:

11、springboot项目启动时对容器中的bean进行延迟初始化
springboot项目启动时对容器中的bean进行延迟初始化 预初始化: Spring Boot在启动应用时,会启动Spring容器,当启动Spring容器时,Spring会自动初始化容器中所有的singleton Bean——这是默认行为 预初始化的好处: 1、项…...

树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写SD Card (三)
简介 仍然强调所有的测试都是来自树莓派3B, 并使用手头上的绿联读卡器进行测试;实现方案: 如 《树莓派镜像安装 设置 镜像批量化操作 - USB boot (二)》中所写, 可以使用树莓派USB挂载方式, 编写自动化脚本, 当有对应的设备出现的时候,格式化 烧写镜…...

C++继承特性(4)——友元与静态
目录 一.继承与友元的关系 二.继承与静态成员的关系 先回顾一下静态成员变量: 运行TestPerson()函数: 测试案例2: 三.练习题: 一.继承与友元的关系 友元关系不能被继承,也就是说父类中的友元函数不能访问子类私…...

VR党建主题数字互动虚拟展馆软件开启党建铸魂育人新篇章
当今时代新媒体技术的发展对大学生的学习、生活等产生着深远的影响。高校作为党建育人的重要场所,充分借助VR技术的强大优势,合理运用到育人工作中,能够不断丰富教育内容。VR智慧党建展厅展馆结合VR技术营造的虚拟现实空间,将党的…...

单网卡实现 双IP 双网段(内外网)同时运行
前提是内外网是同一网线连接(双网线双网卡的具体可以自己搜索下。理论上都设置静态IP后把外网跃点设置小,内网跃点设置大,关闭自动跃点设置同一个接口跃点数,在通过命令提示符添加内网网址走内网网关就可以了)。 需要使…...

C# 委托2
一.委托 1.委托概述: (1)声明一个委托类型。委托声明看上去和方法声明相似,只是没有实现块。 (2)使用该委托类型声明一个委托变量 (3)创建委托类型的对象,把它赋值给委…...

【计算机网络】网络层协议 -- IP协议
文章目录 1. 网络层做了什么事2. IP协议的简介3. IP协议格式4. 分片与组装5. 网段划分6. 特殊的IP地址7. IP地址的数量限制8. 私网IP地址和公网IP地址9. 路由 1. 网络层做了什么事 保证数据可靠地从一台主机到另一台主机 当双方在进行基于TCP的网络通信时,要保证将数…...

记录浙政钉的消息通知的一次开发实战记录
先忍不住吐槽下钉钉的开发文档,实在是不敢恭维,首先每个术语描述都是不统一的,比如有些地方写“”群聊“”,有些地方写“会话”,有些地方写“钉消息”,总之他们自己想怎么写,怎么写,…...

详解主流的Hybrid App 技术框架与研发方案
移动操作系统在经历了诸神混战之后,BlackBerry OS、Symbian OS、Windows Phone等早期的移动操作系统逐渐因失去竞争力而退出。目前,市场上主要只剩下安卓和iOS两大阵营,使得iOS和安卓工程师成为抢手资源。然而,由于两者系统的差异…...

【软件测试】性能测试工具- LoadRunner的介绍和使用
目录 1. LoadRunner是什么2. LoadRunner环境搭建3. LoadRunner三大组件4. LoadRunner脚本录制4.1 WebTous项目介绍启动WebTous项目访问WebTous项目相关配置 4.2 脚本录制新建脚本录制脚本运行脚本 4.3 脚本加强插入事务插入集合点插入检查点插入日志字符串比较 1. LoadRunner是…...

react
react权威面试题 1.jsx转化过程2.fiber架构的理解,解决了什么问题?理解fiber是什么 3.react diff原理tree diffcomponent diffelement diff 4.如何提高组件渲染效率shouldComponentUpdatePureComponentReact.memo 5.react中render方法原理,触…...

AI入门:了解人工智能的基础知识
介绍 人工智能(Artificial Intelligence,简称AI)是一门研究如何使机器能够智能地模拟人类思维和行为的科学与技术领域。在过去几十年里,AI取得了显著的发展,并且在各个领域都产生了深远的影响。本文将引导您进入AI的世…...

ACL原理
ACL原理 ACL是一种用于控制网络设备访问权限的技术,可以通过配置ACL来限制特定用户、应用程序或网络设备对网络资源的访问。 1、ACL(Access Control List) 2、ACL是一种包过滤技术。 3、ACL基于IP包头的IP地址、四层TCP/UDP头部的端口号、…...

EP4CE6E22C8N Error: Can‘t recognize silicon ID for device 1
经过各种排查,发现是AS配置不对,仅供参考 工程 参考某处的工程画板配置的FPGA板子,用于学习入门FPGA。 烧录sof文件是正常的,并能正常运行。 但是烧录jic是failed,查看报错为:Error: Can’t recognize si…...

vue3-seamless-scroll无缝滚动
安装 npm install vue3-seamless-scroll --save 组件配置 list 无缝滚动列表数据,组件内部使用列表长度。 type: Array required: true v-model 通过v-model控制动画滚动与停止,默认开始滚动 type: Boolean, default: true, required: false dire…...

适配器模式——不兼容结构的协调
1、简介 1.1、概述 有的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器/变压器。有了这…...

【NVIDIA CUDA】2023 CUDA夏令营编程模型(一)
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…...

SHELL——备份脚本
编写脚本,使用mysqldump实现分库分表备份。 1、获取分库备份的库名列表 [rootweb01 scripts]# mysql -uroot -p123456 -e "show databases;" | egrep -v "Database|information_schema|mysql|performance_schema|sys" mysql: [Warning] Using …...

VS创建wsdl服务提供给java调用
文章目录 前言1.c#创建asp.net web服务1.1 创建ASP.NET Web应用程序1.2 添加服务类1.3 定义服务方法1.3 浏览服务1.4 发布服务1.5 IIS部署服务 2.Java中调用服务2.1 用动态客户端工厂类调用2.1.1 引入依赖2.1.2 调用测试代码2.1.3 测试结果 2.2 创建代理类进行调用2.2.1 使用ws…...

盘点 TypeScript 内置类型
盘点 TypeScript 内置类型 盘点 TypeScript 内置类型PartialRequiredReadonlyPickRecordExcludeExtractOmitNonNullableParametersConstructorParametersReturnTypeInstanceTypeUppercaseLowercaseCapitalizeUncapitalize 盘点 TypeScript 内置类型 当开发者开始学习 TypeScri…...

Netty 执行了多次channelReadComplete()却没有执行ChannelRead()
[TOC](Netty 执行了多次channelReadComplete()) Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. happy for hardess to solve denpendies.…...

直线导轨的精密等级以及划分依据
直线导轨的作用,是用来支撑和引导运动部件,按给定的方向做往复直线运动的,直线导轨是高精密度的传动元件,广泛使用在各行各业中。 直线导轨的精密等级是判断产品质量的一个重要指标。在众多种类的直线导轨产品中,精密等…...

Ubuntu Server版 之 apache系列 常用配置 以及 隐藏 版本号 IP、Port 搭建服务案例
查看版本 旧的 用 httpd -v 新的 用 apache2 -v 配置检测 旧的 httpd -t 新的 apachectl configtest window用的apache 是 httpd -t Linux 中 apachectl configtest 主配置文件 之前旧版apache 是httpd 现在都改成 apache2 /etc/apache2/apache2.conf window中 httpd.con…...

Kubernetes(K8s)从入门到精通系列之七:K8s的基本概念和术语之安全类
Kubernetes K8s从入门到精通系列之七:K8s的基本概念和术语之安全类 一、安全类二、Role和ClusterRole三、RoleBinding和ClusterRoleBinding一、安全类 开发的Pod应用需要通过API Server查询、创建及管理其他相关资源对象,所以这类用户才是K8s的关键用户。K8s设计了Service A…...

网络安全(黑客)自学误区
前言 网络安全是当今社会中至关重要的议题。随着科技的迅猛发展,网络已经渗透到我们生活的方方面面,给我们带来了巨大的便利和机遇。然而,网络也存在着各种风险和威胁,如黑客攻击、数据泄露等。因此,学习网络安全知识…...

在OK3588板卡上部署模型实现人工智能OCR应用
一、主机模型转换 我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 安装rknn-toolkit2(该工具不能在OK3588板卡上完成模型转换) git clone https://github.com/rockchip-linux/rknn-to…...

在linux中怎样同时运行三个微服务保证退出时不会终止
前言 1.maven中打jar包 使用插件打包,必须在pom.xml中添加插件,否则不能在linux中编译运行 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version&g…...

MD-MTSP:成长优化算法GO求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)
一、成长优化算法GO 成长优化算法(Growth Optimizer,GO)由Qingke Zhang等人于2023年提出,该算法的设计灵感来源于个人在成长过程中的学习和反思机制。学习是个人通过从外部世界获取知识而成长的过程,反思是检查个体自…...

Python入门一
目录: python基本操作python基本数据类型python字符串基本操作python的运算符python控制流-判断python控制流-循环python常用数据结构-列表python常用数据结构-元组python常用数据结构-集合python常用数据结构-字典python函数python函数进阶与参数处理pythonlambda…...

mysql_2.4——安装常见问题
1. 将MySQL添加到环境变量 将 mysql 的 bin 目录地址添加到 系统环境变量 --> PATH 中 2. 将MySQL添加到服务 以管理员的方式启动 cmd (命令提示窗口),使用命令进入到 [mysql]\bin ,执行如下命 令。 # mysqld --install (服务名) # 如: mysqld --…...