第二章 IoC Bean的初始化与延迟加载
2013-06-14 11:50
435 查看
在默认情况下,Spring的ApplicationContext容器在启动的时候,会自动实例化所有singleton的Bean并缓存在容器中。虽然启动时会花费一些时间,但带来两个好处:
1、对Bean提前实例化操作会及早发现一些潜在的配置问题;
2、Bean以缓存的方式保存,当运行期使用到该Bean的时候无需再实例化,加快运行的效率。
如果用户不希望容器启动的时候提前实例化singleton的Bean,可以通过lazy-init属性进行控制:
也可以在beans标签中使用default-lazy-init对所有的singleton的Bean进行延迟加载:
被设置为延迟加载的Bean在某些情况下依旧会提前实例化:如果这个Bean被其它需要提前实例化的Bean引用到,那么Spring也将忽略延迟加载设置。
一般我们不做延迟加载。
1、对Bean提前实例化操作会及早发现一些潜在的配置问题;
2、Bean以缓存的方式保存,当运行期使用到该Bean的时候无需再实例化,加快运行的效率。
如果用户不希望容器启动的时候提前实例化singleton的Bean,可以通过lazy-init属性进行控制:
<bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl" scope="singleton" lazy-init="true"></bean>
也可以在beans标签中使用default-lazy-init对所有的singleton的Bean进行延迟加载:
<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也将忽略延迟加载设置。
一般我们不做延迟加载。
相关文章推荐
- Spring学习--懒加载(延迟初始化Bean)与自动装配
- 【Spring源码分析】非懒加载的单例Bean初始化前后的一些操作
- Spring bean的延迟加载
- 【死磕 Spring】----- IOC 之 加载 Bean
- 关于spring加载applicationContext初始化bean顺序的问题
- Spring IOC-业务对象bean加载到bean工厂
- spring的延迟初始化bean (default-lazy-init 与 lazy-init )
- 【Spring Framework 深入】—— IoC容器初始化 -> Bean定义资源的Resource定位
- spring源码学习之路---IOC容器初始化要义之bean定义载入(四)
- Spring源码阅读——简单模拟Spring的控制反转IOC和依赖注入(Bean的加载和获取)
- Spring源码分析:非懒加载的单例Bean初始化过程(上)
- 3、IoC容器的初始化(2)-BeanFactory创建和Bean Definition的定位资源加载
- 第二章 IoC 三种实例化Bean的方式
- Spring源码分析:非懒加载的单例Bean初始化过程(下)
- (spring-第5回【IoC基础篇】)spring容器从加载配置文件到实例化bean的内部工作机制
- IOC实现之Bean的初始化(五)
- 第二章 IoC Bean的作用域
- SpringBoot在初始化filter之前加载加载部分bean
- 利用Spring BeanPostProcessor 初始化时加载数据到缓存
- Spring源码分析:非懒加载的单例Bean初始化前后的一些操作