Spring容器的懒加载

一、单例模式的对象何时被建立?是使用getBean()方法获取对象的时候建立呢?仍是建立spring容器的时候建立?java

咱们能够测试一下:spring

先定义一个example类,为其定义一个无参数的构造方法:app

public class ExampleBean {
   public ExampleBean() {
       System.out.println("建立了ExampleBean对象");
   }
   public void execute() {
       System.out.println("调用了execute方法");
   }
   public void init() {
       System.out.println("正在执行初始化方法中的操做。。。。");
   }
   public void destroy() {
       System.out.println("对象资源释放。。。");
   }
}

咱们在applicationContext.xml文件中指定其为单例模式:测试

<!-- 建立一个ExampleBean对象 -->
    <bean id ="example" class="com.zlc.test.ExampleBean" init-method = "init"
     destroy-method="destroy" scope="singleton">
    </bean>

运行如下的代码:spa

public static void main(String[] args) {
        String conf = "applicationContext.xml";
        //建立容器对象
        AbstractApplicationContext ac = new ClassPathXmlApplicationContext(conf); 
               
    }

运行结果为:code

由此咱们能够看出,单例模式的对象,是在建立spring容器时就会立刻建立的。可是非单例模式的对象并不会在此时立刻建立xml

咱们也能够设置单例模式的对象延迟加载,并不在建立spring容器时立刻建立,而是在须要使用时再建立,也就是使用getBean()方法获取时再加载,设置延迟加载的方法是:对象

<bean lazy-init="true"></bean>blog

添加这个属性后的xml配置以下所示;资源

 <bean id ="example" class="com.zlc.test.ExampleBean" init-method = "init"
     destroy-method="destroy" scope="singleton" lazy-init="true">

加了这样的设置之后,就不会在建立spring容器时立刻建立单例模式的对象了

 还能够为一组bean设置懒加载,初始化方式等:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd" 
default-lazy-init
="true" default-init-method="init"> <bean id = "computer" class="com.zlc.test.Computer"> <constructor-arg index="0" ref="date"></constructor-arg> </bean> <bean id="date" class="java.util.Date"> </bean> </beans>

这样设置,便可为<beans></beans>中包含的bean统一指定懒加载方式以及初始化方法等。

相关文章
相关标签/搜索