`
lxz891117
  • 浏览: 33277 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

spring中lazy-init详解

 
阅读更多

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-3.0.xsd

    《Spring框架中的beans配置文件详解——以spring-beans-3.0.xsd和3.1.xsd为例》 在Spring框架中,`spring-beans`是核心组件之一,它负责管理对象的生命周期和依赖关系。`spring-beans`的配置文件通常以`.xsd`为后缀...

    Spring-MyBatis-Ajax重点详解

    懒惰初始化可以使用 lazy-init 属性来设置对象“懒惰”初始化,bean 对象在容器启动时候不会初始化,在第一次使用时候才初始化。 在 Spring 框架中,工厂方法是一种封装了复杂的对象创建过程,提供一个简单方法作为...

    Spring-3.0.xsd

    《Spring框架中的Spring-3.0.xsd详解》 在Java世界中,Spring框架以其强大的功能和灵活性,成为了企业级应用开发的首选。Spring的核心之一就是它的XML配置,而Spring-3.0.xsd则是Spring框架3.0版本的XML schema定义...

    Spring配置使用之Bean生命周期详解

    Spring 配置使用之 Bean 生命周期详解是指在 Spring 框架中,Bean 从创建到销毁的整个过程。这个过程是非常重要的,因为它决定了 Bean 的生命周期和行为。 基本概念 在 Spring 中,Bean 的生命周期指的是 Bean 从...

    JAVA spring 系列案例50个和学习资料

    Spring系列第12篇:lazy-init:bean延迟初始化Spring系列第13篇:使用继承简化bean配置(abstract & parent)Spring系列第14篇:lookup-method和replaced-method比较陌生,怎么玩的?Spring系列第15篇:代理详解(Java...

    spring入门学习-3、Bean装配(XML).pdf

    在Spring中,Bean配置项是定义Bean的重要组成部分,通过XML配置文件来指定这些选项。 1. **Id**:这是为Bean分配的一个唯一标识符,它在配置文件内是唯一的。开发人员可以通过这个ID来获取或引用该Bean。 2. **...

    Spring 培训.pdf

    ### Spring框架关键知识点详解 #### 一、Spring框架概述 Spring框架是一个开源的企业级Java应用程序框架,它提供了全面的基础架构支持,使得Java开发者能够更加高效地构建和部署复杂的应用程序。Spring的核心特性...

    struts2 hibernate spring集成

    ### Struts2、Hibernate与Spring集成详解 #### 一、集成环境搭建 在现代软件开发过程中,特别是Java Web应用开发领域,Struts2、Hibernate与Spring三者的集成使用非常常见。这种集成不仅可以提高应用程序的可维护...

    spring2.0技术手册--林信良

    - **Bean 的懒加载**:通过设置 `&lt;bean lazy-init="true"&gt;`,可以让 Bean 在首次被请求时才进行初始化,提高了系统启动速度。 - **依赖查找**:除了原有的依赖注入之外,还支持依赖查找(Dependency Lookup),即在...

    Spring中Quartz的配置

    ### Spring中Quartz的配置详解 #### 一、前言 Spring框架因其强大的功能和灵活性在企业级应用开发中占据了一席之地。其中,对于定时任务的支持,Spring结合了Quartz这一优秀的开源任务调度框架,提供了更为灵活和...

    Spring+Struts2_整合原理

    ### Spring与Struts2整合原理详解 #### 一、整合背景及意义 随着企业级应用需求的日益复杂,单一框架往往难以满足项目的所有需求。在Java Web开发领域,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)...

    Spring普通定时任务和动态设置定时任务

    ### Spring 普通定时任务与动态设置定时任务详解 #### 一、Spring 定时任务简介 在软件开发过程中,经常会遇到需要周期性执行的任务,例如数据备份、定时发送邮件等。对于这类需求,Spring 提供了一种简单且灵活的...

    Spring2.5学习笔记

    ### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 Java 开发框架,主要用于简化企业级应用的开发工作。Spring 提供了一系列强大的功能,比如控制反转 (Inversion of Control, IOC)...

    spring+ajax+mybatis+springmvc笔记

    - 通过设置 `lazy-init` 属性为 `true`,可以使容器延迟创建这些 bean 实例,直到首次使用时才创建。 - **2.7 Set 方式注入** - 需要提供相应的 setter 方法,并在配置文件中使用 `&lt;property&gt;` 元素进行配置。 #...

    spring bean 属性总结

    ### Spring Bean 属性详解 Spring框架是Java平台上的一个开源框架,主要用来简化企业级应用程序的开发。在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件...

    传智播客Spring2.5.6学习笔记最新整理

    可配置`lazy-init`属性控制初始化时机。 2. **Prototype作用域**:每次请求都会创建一个新的Bean实例。 理解并熟练运用Spring的配置及Bean管理机制,是掌握Spring框架的关键。这不仅有助于构建稳定、高效的应用...

    S2SH xml配置文件

    - `default-lazy-init="true"`表示默认情况下Bean的实例化采用懒加载方式。 ```xml &lt;!-- 源Bean提供Hibernate session factory --&gt; &lt;!-- 数据源配置省略 --&gt; &lt;bean id="sessionFactory" class="org.spring...

    spring2.5 学习笔记

    - 使用 `lazy-init` 控制 Bean 是否延迟加载。 - `init-method` 和 `destroy-method` 不应与 `prototype` 作用域的 Bean 一起使用。 #### 第六课:Annotation 方式的 Spring - **注解介绍**: - **@Autowired**...

Global site tag (gtag.js) - Google Analytics