`
123003473
  • 浏览: 1064320 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

2011-05-16 15:25 spring的lazy-init属性

 
阅读更多
spring的lazy-init属性
ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。

有时候这种默认处理可能并不是你想要的。如果你不想让一个singleton bean在ApplicationContext实现在初始化时被提前实例化,那么可以将bean设置为延迟实例化。一个延迟初始化bean将告诉IoC 容器是在启动时还是在第一次被用到时实例化。

在XML配置文件中,延迟初始化将通过<bean/>元素中的lazy-init属性来进行控制。例如:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean"lazy-init="true"><!-- various properties here... --></bean> <bean name="not.lazy" class="com.foo.AnotherBean"><!-- various properties here... --></bean>
当ApplicationContext实现加载上述配置时,设置为lazy的bean将不会在ApplicationContext启动时提前被实例化,而not.lazy却会被提前实例化。

需要说明的是,如果一个bean被设置为延迟初始化,而另一个非延迟初始化的singleton bean依赖于它,那么当ApplicationContext提前实例化singleton bean时,它必须也确保所有上述singleton 依赖bean也被预先初始化,当然也包括设置为延迟实例化的bean。因此,如果Ioc容器在启动的时候创建了那些设置为延迟实例化的bean的实例,你也不要觉得奇怪,因为那些延迟初始化的bean可能在配置的某个地方被注入到了一个非延迟初始化singleton bean里面。

在容器层次中通过在<beans/>元素上使用'default-lazy-init'属性来控制延迟初始化也是可能的。如下面的配置:

<beansdefault-lazy-init="true"><!-- no beans will be eagerly pre-instantiated... --></beans>



From: http://blog.csdn.net/lddongyu/archive/2007/07/27/1711047.aspx
分享到:
评论

相关推荐

    浅谈spring中的default-lazy-init参数和lazy-init

    浅谈Spring中的default-lazy-init参数和lazy-init 在Spring框架中,有两个重要的参数default-lazy-init和lazy-init,它们都是用于控制Bean实例化的时机的。下面我们将详细介绍这两个参数的作用和区别。 一、...

    spring bean 属性总结

    - **init-method属性**:指定Bean初始化方法,通常用于资源的初始化。 - **destroy-method属性**:指定Bean销毁方法,用于清理资源。 - **factory-bean/factory-method属性**:通过工厂方法创建Bean。`factory-...

    spring2.5 学习笔记

    - **生命周期管理**:通过 `init-method` 和 `destroy-method` 来定义 Bean 的初始化和销毁方法。 - **注意事项**: - 使用 `lazy-init` 控制 Bean 是否延迟加载。 - `init-method` 和 `destroy-method` 不应与 `...

    Spring基础面试

    - **知识点**: Spring 支持多种依赖注入的方式,主要包括:属性注入、构造器注入和工厂方法注入。 - **解释**: - **属性注入**:通过 setter 方法进行依赖注入,这种方式比较灵活,但可能引入额外的 setter 方法,...

    spring bean的生命周期

    - **初始化回调**:Spring支持两种类型的初始化回调方法,即`@PostConstruct`注解的方法和在XML中定义的`init-method`属性指定的方法。 2. **容器管理的生命周期回调** - **Singleton Beans的懒加载**:如果Bean...

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

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

    spring-beans-3.0.xsd

    例如,`&lt;bean&gt;`元素新增了`lazy-init`属性,可以指定bean是否延迟初始化,这有助于优化应用启动性能。`&lt;beans&gt;`元素添加了`default-lazy-init`属性,可以设置整个配置文件中所有bean的默认延迟初始化行为。此外,`...

    spring-core.pdf

    - **初始化回调**: 通过`InitializingBean`接口或者在Bean定义中指定`init-method`属性来定义初始化方法。 - **销毁回调**: 通过`DisposableBean`接口或者在Bean定义中指定`destroy-method`属性来定义销毁方法。 -...

    Spring-3.0.xsd

    - **Lazy Initialization**:通过lazy-init属性,可以控制Bean是否延迟初始化,提高系统启动效率。 - **Auto-wiring**:自动装配功能,可以根据类型或名称自动查找并注入依赖。 在实际开发中,理解Spring-3.0.xsd...

    百知教育 — Spring系列课程 — 工厂高级特性1

    - 可以通过`init-method`属性指定初始化方法,如`&lt;bean id="product" class="xxx.Product" init-method="myInit"/&gt;`,当Bean被创建后会调用`myInit`方法。 5. **接口初始化**: - `InitializingBean`接口提供了`...

    第十章 Spring 配置元信息(Configuration Metadata)1

    - `default-init-method`和`default-destroy-method`:用于指定默认的初始化和销毁方法,如果未在Bean定义中指定,容器会尝试调用这些方法。 4. **Spring 外部化配置元信息**:PropertySource表示从外部文件加载的...

    Spring注解驱动开发.pdf

    - `@Bean`中的`initMethod`属性:指定初始化方法。 - **销毁**: - `DisposableBean`接口:实现该接口的类会在bean销毁前调用`destroy()`方法。 - `@PreDestroy`:用于标记在销毁前执行的方法。 - `@Bean`中的`...

    海辉面试题

    - 通过懒加载属性(`lazy="true"`)实现。 #### JNDI - **JNDI**:Java Naming and Directory Interface,用于查找和定位企业级应用中的资源。 #### session的实现即机制是什么? - **Session机制**:服务器为每...

    Spring的Bean配置说明

    - **`init-method`属性**:指定一个初始化方法,在Bean创建后立即调用。通常用于执行资源初始化操作。 - **`destroy-method`属性**:指定一个销毁方法,在容器关闭前调用。通常用于释放资源,例如关闭数据库连接。...

    spring学习指南

    但可以通过`lazy-init`属性设置为`true`,使bean在首次请求时才实例化,从而实现延迟初始化。 - **1.3 自动装配(Autowiring)**:Spring可以自动将bean之间的依赖关系建立起来,无需显式配置。主要有byName、...

    spring 笔记整理

    - `init-method`:指定bean初始化时执行的方法。 - `destroy-method`:指定bean销毁时执行的方法。 4. **IoC和DI** - **IoC(Inversion of Control)**:控制权反转,原本对象实例化的控制权从代码转移到了...

    Spring 培训.pdf

    - `init-method`和`destroy-method`可以用来指定初始化和销毁时调用的方法。 Spring框架的这些核心特性和功能极大地简化了Java应用程序的开发流程,使得开发者能够更加专注于业务逻辑的实现,而不需要过多关注底层...

    spring_精简教程

    - **`init-method`与`destroy-method`属性**:分别用于指定Bean的初始化方法和销毁方法。 #### 四、依赖注入DI 1. **Setter方法注入**: - **基本类型注入**:例如,可以通过`&lt;property&gt;`标签直接为Bean的属性...

    Spring IOC Bean标签属性介绍(教学视频+源代码)

    Spring IOC Bean标签属性介绍 0.Bean标签属性介绍 1.0 新建一个Maven工程 1.1 pom.xml 1.2 实体类JavaBean 1.2.1 User类 1.3 当Scope="singleton"时 1.4 当 Scope="singleton" 且 lazy-init="true" 时 1.5 当scope=...

    Spring的学习笔记

    - **生命周期**:包括初始化方法(init-method)和销毁方法(destroy-method),以及懒加载(lazy-init)特性。 **注解方式配置Spring** - **@Autowired**:自动装配bean,可以按类型或按名称匹配。 - **@...

Global site tag (gtag.js) - Google Analytics