当前位置: 首页 > 工具软件 > Lazy > 使用案例 >

default-lazy-init and lazy-init

贲俊才
2023-12-01
default-lazy-init="false"

spring的容器是提供了lazy-load的,即默认的缺省设置是bean没有lazy-load,该属性处于false状态,这样导致spring在启动过程导致在启动时候,会默认加载整个对象实例图,从初始化ACTION配置、service配置到dao配置、乃至到数据库连接、事务等等。 这么庞大的规模,难怪spring的启动时间要花将近1分钟。把beans的default-lazy-init改为true就,再次启动,速度从原来的55秒,降到8秒钟!!虽然是非常小一个改动,但是影响确实非常大。 Spring的default-lazy-init 与 lazy-init 在同一个文件中<bean />里面设置的优先级大于<beans />里设置的优先级:
------------------------------------------------------- 
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可以先不管。 
 类似资料: