码迷,mamicode.com
首页 > 编程语言 > 详细

Spring容器的懒加载

时间:2018-08-01 20:45:20      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:资源   ffffff   color   cut   class   single   使用   conf   执行   

1、单例模式的对象什么时候被创建?是使用getBean()方法获取对象的时候创建呢?还是创建spring容器的时候创建?

我们可以测试一下:

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

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>

运行以下的代码:

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

运行结果为:

技术分享图片

由此我们可以看出,单例模式的对象,是在创建spring容器时就会马上创建的。但是非单例模式的对象并不会在此时马上创建

我们也可以设置单例模式的对象延迟加载,并不在创建spring容器时马上创建,而是在需要使用时再创建,也就是使用getBean()方法获取时再加载,设置延迟加载的方法是:

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

添加这个属性后的xml配置如下所示;

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

加了这样的设置以后,就不会在创建spring容器时马上创建单例模式的对象了

 

Spring容器的懒加载

标签:资源   ffffff   color   cut   class   single   使用   conf   执行   

原文地址:https://www.cnblogs.com/zlingchao/p/9403500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!