原文地址:http://blog.csdn.net/dracotianlong/article/details/8989874
今天在做项目的时候无意看到 在spring的配置中的根节点上有个 default-lazy-init="true"配置,从来没有用过,google下,记录如下
1、spring的default-lazy-init参数
spring在启动的时候,会默认加载会默认加载整个对象实例图,从初始化ACTION配置、到 service配置到dao配置、乃至到数据库连接、事务等等。这样可以减少web服务器在运行时的负担,但是对于开发者来说无疑是效率极低的一个设置了。
spring提供了default-lazy-init属性,其配置形式如下,applicationContext.xml中:
< beans default-lazy-init ="true" >
</beans>
我用以前一个office项目测试了下,因为office的spring文件很多,我就配置了下,启动时间减少60%左右。
2、Spring 中lazy-init 和abstract 属性
1.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可以先不管。
2.abstract
<bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
</bean>
bean abstract="true"时,该bean不会被实例化,上面的bean是个模板
相关推荐
default-lazy-init="true"> ``` - 定义了多个命名空间,分别用于支持Bean定义、AOP(面向切面编程)、事务管理等功能。 - `default-lazy-init="true"`表示默认情况下Bean的实例化采用懒加载方式。 ```xml <!-- 源...
<param-value>classpath:applicationContext*.xml</param-value> </context-param> ``` - `<listener>`标签定义了一个监听器,用于监听容器的启动事件。 - `org.springframework.web.context....
-- 关于spring启动的优化 default-lazy-init="true" --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value...
在applicationContext.xml文件中,可以通过以下方式设置default-lazy-init参数: ``` <beans default-lazy-init="true"> ...... </beans> ``` 二、lazy-init参数 lazy-init参数是Bean级别的参数,它控制着单个...
<beans default-lazy-init="true"> <bean id="personManager" class="com.acme.PersonManager"/> </beans> ``` 通过这样的配置,Spring会在启动时自动加载这些Bean,并根据依赖关系进行注入。 ##### 4. 修改...
default-lazy-init="true"> <!-- 配置PropertyPlaceholderConfigurer以读取jdbc.properties --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config....
<package name="default" extends="struts-default" namespace="/"> <action name="showall" class="com.example.action.GoodsAction" method="showall"> <result name="success">/WEB-INF/views/all.jsp</result...
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime"/> </list> </...
7. class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> 8. <property name="nativeJdbcExtractor"> 9. <ref local="nativeJdbcExtractor"/> 10. </property> 11. </bean> ...
<bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime"/> </list> </...
在Spring中配置一个bean为延迟实例化非常简单,只需要在`<bean>`元素中添加`lazy-init`属性并设置其值为`true`即可。例如: ```xml <bean id="lazyBean" class="com.example.LazyBean" lazy-init="true"> <!-- ...
<param-value>/WEB-INF/beans.xml</param-value> </context-param> ``` 3. **Struts2值栈的理解** - **值栈(ValueStack)** 是Struts2的核心概念,它基于OGNL(Object-Graph Navigation Language)提供数据访问...
要实例化 Spring 容器,需要创建一个 Spring 配置文件(applicationContext.xml),用于定义 Bean 的实例化和依赖项注入。然后,使用 Spring 的ApplicationContext 来实例化 Bean 并调用其方法。 六、 控制 Bean ...