spring懒加载与非懒加载

时间:2021-11-03 15:45:48

在这里创建了一个局部的配置文件duck.xml并与applicationContext关联,也可以不配置duck.xml这个文件,在这里只是说明还可以用这种方法而已。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
           
           
           <!-- bean:将一个类的对象创建过程交给spring容器
                     class:指定类的具体路径
                     id:唯一标识符
               scope:用来控制spring容器产生对象的方式,可以为单例也可以为多例。
                    常用的值为singleton(单例),prototype(多例),默认的是单例      
                init-method:表示初始化方法,只写初始化方法的名字,不用加上();
                 -->
          <import resource="cn/java/lazy/duck.xml"></import>
  
</beans>
 
duck.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
           
           <!-- 
                lazy-init:告诉spring容器是否以懒加载的方式创建对象
                取值有:true,false,default
                true/default:以懒加载的方式创建对象。当真正使用对象的时候才创建对象
                false:非懒加载,容器启动时立刻创建对象
            -->
            <bean id="bigDuck" class="cn.java.lazy.Duck" lazy-init="true"></bean>
            
           
           </beans>
           



懒加载结果如下,先输出的是---------,当真正使用对象的时候才创建对象。

spring懒加载与非懒加载


下面是非懒加载的结果:

spring懒加载与非懒加载

注意:

懒加载与非懒加载的优缺点:
懒加载:对象使用的时候才去创建。节省资源,但是不利于提前发现错误

非懒加载:容器启动时立马创建。消耗资源,有利于提前发现错误

多例是以懒加载的方式产生对象

单例是以非懒加载的方式产生对象