第二章 IoC Bean的初始化与延迟加载

简介: <p style="margin-bottom:0cm">在默认情况下,<span style="font-family:Times New Roman,serif">Spring</span>的<span style="font-family:Times New Roman,serif">ApplicationContext</span>容器在启动的时候,会自动实例化所有<span st

在默认情况下,SpringApplicationContext容器在启动的时候,会自动实例化所有singletonBean并缓存在容器中。虽然启动时会花费一些时间,但带来两个好处:

1、对Bean提前实例化操作会及早发现一些潜在的配置问题;

2Bean以缓存的方式保存,当运行期使用到该Bean的时候无需再实例化,加快运行的效率。

如果用户不希望容器启动的时候提前实例化singletonBean,可以通过lazy-init属性进行控制:

<bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl" scope="singleton" lazy-init="true"></bean>

也可以在beans标签中使用default-lazy-init对所有的singletonBean进行延迟加载:

<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
	default-lazy-init="true">

被设置为延迟加载的Bean在某些情况下依旧会提前实例化:如果这个Bean被其它需要提前实例化的Bean引用到,那么Spring也将忽略延迟加载设置。

一般我们不做延迟加载。


目录
相关文章
|
大数据 Apache
【Flume】Flume常用的拓扑结构
【4月更文挑战第4天】【Flume】Flume常用的拓扑结构
|
3月前
|
数据安全/隐私保护 Ruby 容器
「IRB合规型科研协作工具」的双盲评审模块设计与GDPR日志架构
科研项目常因文献、数据与任务管理脱节导致内耗。本文从“文献管理+数据共享+任务协同”三方面,测评5款开源工具,助力团队提升协作效率,降低成本。
「IRB合规型科研协作工具」的双盲评审模块设计与GDPR日志架构
|
安全 区块链
区块链农场游戏系统开发运营版/玩法详情/规则方案/案例设计/项目源码
Developing a blockchain farm game system is an interesting and challenging task. Here is a design solution that can help you get started developing such a system
|
Linux iOS开发 MacOS
pnpm全局安装报错:Run “pnpm setup“ to create it automatically, or set the global-bin-dir setting, or the PN
pnpm全局安装报错:Run “pnpm setup“ to create it automatically, or set the global-bin-dir setting, or the PN
3705 0
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配制表符
【4月更文挑战第2天】
1203 2
正则表达式深度解析:匹配制表符
|
存储 Java 数据库
在Spring Boot中实现多租户架构的数据隔离
在Spring Boot中实现多租户架构的数据隔离
|
分布式计算 资源调度 Java
Spark安装教程
该教程详细介绍了在Linux环境下安装Spark 3.1.2的步骤。首先,检查JDK版本需为1.8。接着,下载Spark资源并设置环境变量`SPARK_HOME`。配置`spark-env.sh`和`yarn-site.xml`文件,禁用内存检查。然后,重启Hadoop集群,启动Spark集群,并通过`jps -ml`检查Spark Master和Worker。可以通过Web UI访问Spark状态,并使用`spark-shell`测试Scala交互环境及Spark on Yarn。最后,学习如何关闭Spark集群。
921 2
Spark安装教程
|
机器学习/深度学习 人工智能 自然语言处理
ai基础知识
人工智能基础知识包括定义与概念、机器学习、深度学习、计算机视觉、自然语言处理和机器人学。数学与算法、编程语言(如Python)及计算资源(GPU、CPU)是其技术基础。数据是AI的关键,机器学习流程涉及数据预处理、特征工程、模型训练到部署。持续学习还包括对伦理、隐私和可解释性AI的理解。
2316 1
|
Java 关系型数据库 MySQL
|
算法 安全 C#
Unity——热更新浅析
Unity——热更新浅析
286 0