在这里创建了一个局部的配置文件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>
懒加载结果如下,先输出的是---------,当真正使用对象的时候才创建对象。
下面是非懒加载的结果:
注意:
懒加载与非懒加载的优缺点:
懒加载:对象使用的时候才去创建。节省资源,但是不利于提前发现错误
非懒加载:容器启动时立马创建。消耗资源,有利于提前发现错误
多例是以懒加载的方式产生对象
单例是以非懒加载的方式产生对象