http://blog.csdn.net/fhx007/article/details/7016704
ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化(也就是依赖注入)。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。
<bean id="testBean" class="com.fhx.TestBean">
该bean默认的设置为:
<bean id="testBean" class="com.fhx.TestBean" lazy-init="false">
lazy-init="false" 立退加载,表示spring启动时,立刻进行实例化。(lazy-init 设置只对scop属性为singleton的bean起作用)
有时候这种默认处理可能并不是你想要的。如果你不想让一个singleton bean在ApplicationContext实现在初始化时被提前实例化,那么可以将bean设置为延迟实例化。
<bean id="testBean" class="com.fhx.TestBean" lazy-init="true">, lazy-init="true"> 延迟加载,设置为lazy的bean将不会在ApplicationContext启动时提前被实例化,而是在第一次向容器通过getBean索取bean时实例化的。如果一个设置了立即加载的bean1,引用了一个延迟加载的bean2,那么bean1在容器启动时被实例化,而bean2由于被bean1引用,所以也被实例化,这种情况也符合延迟加载的bean在第一次调用时才被实例化的规则。
在容器层次中通过在<beans/>元素上使用'default-lazy-init'属性来控制延迟初始化也是可能的。如下面的配置:
<beans default-lazy-init="true"><!-- no beans will be eagerly pre-instantiated... --></beans>
如果一个bean的scope属性为scope=“pototype“时,即使设置了lazy-init="false",容器启动时不实例化bean,而是调用getBean方法是实例化的。
分享到:
相关推荐
《Spring框架中的beans配置文件详解——以spring-beans-3.0.xsd和3.1.xsd为例》 在Spring框架中,`spring-beans`是核心组件之一,它负责管理对象的生命周期和依赖关系。`spring-beans`的配置文件通常以`.xsd`为后缀...
懒惰初始化可以使用 lazy-init 属性来设置对象“懒惰”初始化,bean 对象在容器启动时候不会初始化,在第一次使用时候才初始化。 在 Spring 框架中,工厂方法是一种封装了复杂的对象创建过程,提供一个简单方法作为...
《Spring框架中的Spring-3.0.xsd详解》 在Java世界中,Spring框架以其强大的功能和灵活性,成为了企业级应用开发的首选。Spring的核心之一就是它的XML配置,而Spring-3.0.xsd则是Spring框架3.0版本的XML schema定义...
Spring 配置使用之 Bean 生命周期详解是指在 Spring 框架中,Bean 从创建到销毁的整个过程。这个过程是非常重要的,因为它决定了 Bean 的生命周期和行为。 基本概念 在 Spring 中,Bean 的生命周期指的是 Bean 从...
Spring系列第12篇:lazy-init:bean延迟初始化Spring系列第13篇:使用继承简化bean配置(abstract & parent)Spring系列第14篇:lookup-method和replaced-method比较陌生,怎么玩的?Spring系列第15篇:代理详解(Java...
在Spring中,Bean配置项是定义Bean的重要组成部分,通过XML配置文件来指定这些选项。 1. **Id**:这是为Bean分配的一个唯一标识符,它在配置文件内是唯一的。开发人员可以通过这个ID来获取或引用该Bean。 2. **...
### Spring框架关键知识点详解 #### 一、Spring框架概述 Spring框架是一个开源的企业级Java应用程序框架,它提供了全面的基础架构支持,使得Java开发者能够更加高效地构建和部署复杂的应用程序。Spring的核心特性...
### Struts2、Hibernate与Spring集成详解 #### 一、集成环境搭建 在现代软件开发过程中,特别是Java Web应用开发领域,Struts2、Hibernate与Spring三者的集成使用非常常见。这种集成不仅可以提高应用程序的可维护...
- **Bean 的懒加载**:通过设置 `<bean lazy-init="true">`,可以让 Bean 在首次被请求时才进行初始化,提高了系统启动速度。 - **依赖查找**:除了原有的依赖注入之外,还支持依赖查找(Dependency Lookup),即在...
### Spring中Quartz的配置详解 #### 一、前言 Spring框架因其强大的功能和灵活性在企业级应用开发中占据了一席之地。其中,对于定时任务的支持,Spring结合了Quartz这一优秀的开源任务调度框架,提供了更为灵活和...
### Spring与Struts2整合原理详解 #### 一、整合背景及意义 随着企业级应用需求的日益复杂,单一框架往往难以满足项目的所有需求。在Java Web开发领域,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)...
### Spring 普通定时任务与动态设置定时任务详解 #### 一、Spring 定时任务简介 在软件开发过程中,经常会遇到需要周期性执行的任务,例如数据备份、定时发送邮件等。对于这类需求,Spring 提供了一种简单且灵活的...
### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 Java 开发框架,主要用于简化企业级应用的开发工作。Spring 提供了一系列强大的功能,比如控制反转 (Inversion of Control, IOC)...
- 通过设置 `lazy-init` 属性为 `true`,可以使容器延迟创建这些 bean 实例,直到首次使用时才创建。 - **2.7 Set 方式注入** - 需要提供相应的 setter 方法,并在配置文件中使用 `<property>` 元素进行配置。 #...
### Spring Bean 属性详解 Spring框架是Java平台上的一个开源框架,主要用来简化企业级应用程序的开发。在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件...
可配置`lazy-init`属性控制初始化时机。 2. **Prototype作用域**:每次请求都会创建一个新的Bean实例。 理解并熟练运用Spring的配置及Bean管理机制,是掌握Spring框架的关键。这不仅有助于构建稳定、高效的应用...
- `default-lazy-init="true"`表示默认情况下Bean的实例化采用懒加载方式。 ```xml <!-- 源Bean提供Hibernate session factory --> <!-- 数据源配置省略 --> <bean id="sessionFactory" class="org.spring...
- 使用 `lazy-init` 控制 Bean 是否延迟加载。 - `init-method` 和 `destroy-method` 不应与 `prototype` 作用域的 Bean 一起使用。 #### 第六课:Annotation 方式的 Spring - **注解介绍**: - **@Autowired**...