`

spring中的default-lazy-init和lazy-init

 
阅读更多

在spring的配置中的根节点上有个  default-lazy-init="true"配置:

 

1、spring的default-lazy-init参数 

在spring的配置中的根节点上有个  default-lazy-init="true"配置。参数表示延时加载,即在项目启动时不会实例化注解的bean,除非启动项目时需要用到,未实例化的注解对象在程序实际访问调用时才注入调用

spring在启动的时候,default-lazy-init参数默认为false,会默认加载整个对象实例图,从初始化ACTION配置、到 service配置到dao配置、乃至到数据库连接、事务等等。这样可以减少web服务器在运行时的负担,但是对于开发者来说无疑是效率极低的一个设置了。 

spring提供了default-lazy-init属性,其配置形式如下,applicationContext.xml中:

< beans  default-lazy-init ="true" >
  .......  
</beans>

 实际开发中可将default-lazy-init属性设置为true,可大大减少项目启动时间

 

2、Spring 中lazy-init 和属性 

<beans> 
      <bean id="service1" type="bean路径" lazy-init="true"/> 
      <bean id="service2" type="bean路径" lazy-init="false"> 
             <property name="service1" ref="service1"/> 
      </bean> 
</beans>

以上两个bean,一个lazy-init属性为true,一个为false,由什么区别呢 

当 IoC容器启动时,service2会实例化,而service1则不会;但是但容器实例化service2时,service1也被实例化了,为什么呢,因为service2需要它。也就是说lazy-init="true"的bean,IoC容器启动时不会实例化该bean,只有当容器需要用到时才实例化它。lazy-init有利于容器效率,对于不需要的bean可以先不管。 

 

同时我们可以针对具体的模块在相应的bean里面使用lazy-init 属性,lazy-init 比default-lazy-init的优先级高。

spring注解可使用@Lazy(false)注解标签注解在类名上,相当于在bean中配置了lazy-init属性

分享到:
评论

相关推荐

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

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

    spring-beans-3.0.xsd

    `&lt;beans&gt;`元素添加了`default-lazy-init`属性,可以设置整个配置文件中所有bean的默认延迟初始化行为。此外,`&lt;constructor-arg&gt;`和`&lt;property&gt;`支持了`ref`和`value`的简写形式,使得配置更简洁。 `spring-beans-...

    springframework.4.3.22.RELEASE

    'default-lazy-init' attribute is not processed when XSD validation is disabled [SPR-8335] #12983 Spring JavaMailSenderImpl does not show proper message when recipient list is empty [SPR-17540] #22072 ...

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

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

    spring1.2学习心得分享

    初始化:&lt;bean init-method=""/&gt; e.资源释放:&lt;bean destroy-method=""/&gt;仅对单例对象有效 (2)IoC概念 Inversion of Control 控制反转或控制转移 Don't Call Me,We will call you! 控制权:对象的创建和调用...

    spring学习心得

    初始化:&lt;bean init-method=""/&gt; e.资源释放:&lt;bean destroy-method=""/&gt;仅对单例对象有效 (2)IoC概念 Inversion of Control 控制反转或控制转移 Don't Call Me,We will call you! 控制权:对象的创建和调用...

    spring1.1开发理解

    初始化:&lt;bean init-method=""/&gt; e.资源释放:&lt;bean destroy-method=""/&gt;仅对单例对象有效 (2)IoC概念 Inversion of Control 控制反转或控制转移 Don't Call Me,We will call you! 控制权:对象的创建和调用...

    HelloSpring.zip

    我的博客中“maven环境搭建及Spring入门”的项目代码。在idea中运行成功。 1。创建IOC容器 2。通过xml装配对象 【简单类型用value、复杂(引用类型)用ref、数组,集合,Map的装配】 ...default-lazy-init=true

    Spring 延迟实例化

    在Spring中配置一个bean为延迟实例化非常简单,只需要在`&lt;bean&gt;`元素中添加`lazy-init`属性并设置其值为`true`即可。例如: ```xml &lt;bean id="lazyBean" class="com.example.LazyBean" lazy-init="true"&gt; &lt;!-- ...

    struts2 hibernate spring集成

    -- 关于spring启动的优化 default-lazy-init="true" --&gt; class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt; &lt;value&gt;classpath:jdbc.properties &lt;!-- 使用proxool连接池...

    spring 配置文件简单说明

    1. `default-init-method`: 如果设置了这个属性,那么配置文件中所有的Bean在初始化时都会调用指定的方法。这是一个方便的机制,用来确保所有Bean在开始使用前都完成了必要的初始化工作。 2. `default-destroy-...

    Spring+Struts2_整合原理

    具体操作是在`struts.properties`文件中设置`struts.objectFactory`为`springs`,表明Struts2将使用Spring来创建和管理Action对象。配置示例如下: ```xml &lt;constant name="struts.objectFactory" value="spring"/...

    Spring框架web项目实战全代码分享

    - `default-lazy-init`和`default-autowire`分别定义了默认的bean初始化方式(是否延迟加载)和自动装配策略。 6. **实体类`User.java`**: 实体类`User`包含`name`和`age`属性,以及对应的getter和setter方法。...

    springframework.5.0.12.RELEASE

    New Features FormHttpMessageConverter should support non-String form values [SPR-17645] #22174 ...'default-lazy-init' attribute is not processed when XSD validation is disabled [SPR-8335] #12983

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

    &lt;bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" default-lazy-init="true"&gt; ``` 3. **动态更新 Trigger**:通过获取 Scheduler 实例并调用相应的 API 方法来...

    SSH学习之spring

    &lt;beans default-autowire="byName" default-lazy-init="false" default-dependency-check="none"&gt; &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; &lt;!-- 其他属性...

    spring mvc框架下的aop例子

    default-lazy-init="true" default-autowire="byName"&gt; &lt;!-- 启用AspectJ自动代理 --&gt; &lt;aop:aspectj-autoproxy/&gt; &lt;!-- 配置切面类 --&gt; ``` ### 实现 2. 接下来,创建一个名为`Aop`的切面类,它包含了...

    Spring2.5学习笔记

    - **Default Lazy Initialization**:若希望对所有 Bean 都应用懒加载,则可以在 `&lt;beans&gt;` 根节点中设置 `default-lazy-init="true"`。 - **初始化和销毁方法**:可以指定初始化和销毁方法来管理 Bean 的生命周期...

Global site tag (gtag.js) - Google Analytics