zoukankan      html  css  js  c++  java
  • Spring延迟加载

    如下内容引用自:http://www.cnblogs.com/wcyBlog/p/3756624.html

    1、Spring中lazy-init详解
    ApplicationContext实现的默认行为就是在启动服务器时将所有singleton bean提前进行实例化
    (也就是依赖注入)。提前实例化意味着作为初始化过程的一部分,applicationContext实例会创
    建并配置所有的singleton bean。通常情况下这是一件好事,因为这样在配置中的任何错误就会
    被立刻实现(否则的话可能要话几个小时甚至几天)。

    <bean id="testBean" class="cn.itcast.test.TestBean" />该bean默认的设置为:
    <bean id="testBean" calss="cn.itcast.test.TestBean" lazy-init="false" /> lazy-init="false"
    立即加载,表示在spring启动时,立刻进行实例化。

    有时候这种默认处理可能并不是你想要的。如果你不想让一个singleton bean在ApplicationContext
    实现初始化时被提前实例化,那么可以将bean设置为延时实例化。

    <bean id="testBean" calss="cn.itcast.test.TestBean" 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方法实例化的
    另外说明:
      .init-method属性指定初始化时执行的方法,distory-method属性指定bean销毁时执行的方法。

    如下内容引用自:http://blog.csdn.net/lzj0470/article/details/17787165

    一个设置为lazy-init属性的bean,就意味要延迟加载,也就是IoC 容器将第一次被用到时才开始实例化。


    bean的默认lazy-init=false,不需要延迟加载,IoC 容器将在服务器启动的时候,会解读ApplicationContext.xml文件,不管你是不是要使用该bean,都会先进行实例化。这会造成启动的时候,特别的慢。但是,也是最保险的方法。


    据说,在spring设置lazy-init=true的情况下,一个应用可以从 55 秒下降到 8 秒!

  • 相关阅读:
    vue前台(八)
    npm 淘宝镜像的配置
    详解数组中的reduce方法
    javaScript中的布尔值判断
    vue前台(七)
    vue前台(六点二)
    vue前台(六点一)
    vue前台(五)
    Android涂鸦技术及刮刮乐示例分析
    Android控件ActionBar浅析及适配2.x的方法介绍
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5710442.html
Copyright © 2011-2022 走看看